asp页面输入中文字符查询时报错
informix server:IBM Informix Dynamic Server Version 10.00.FC8informix codeset:
dbs_dbsnamesysmaster
dbs_collateen_US.819
asp webserver: Windows2003 +IIS + IBM InformixClient-SDK 2.90
odbc client locale:en_US.819
odbc database locale:en_US.819
setnet32config: CLIENT_LOCAL=en_US.819
setnet32 config: DB_LOCAL:en_US.819
具体问题:我在webserver上新建了systemdsn,通过asp调用dsn,在输入中文字符(例如姓名)来查询informix数据库的内容就会报错。但输入英文帐号就可以查询出来数据。我想应该是字符集设置的问题,但不知道该如何解决。。请各位帮帮忙,谢谢
报错内容:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21'
ODBC 驱动程序不支持所需的属性。
[ 本帖最后由 scorpioer 于 2009-11-6 10:53 编辑 ]
回复 #1 scorpioer 的帖子
可以在服务器端看看你链接的session返回的信息,比如SQL语句,sqlcode等,另外可以用excel用这个ODBC的数据源倒些带中文的表看看?我反而碰到把字符集设成zh_CN.gb反而有问题,用en_US.819却好了:mrgreen: 我导出来的中文数据是正常显示的呀,我是在asp页面中输入中文姓名,然后想通过中文姓名查找出相关信息的时候报错啊 自己顶上去:em17: 找支持中文的ODBC驱动。
回复 #3 scorpioer 的帖子
曾经使用过jsp+jdbc连informix数据库..也许asp+odbc方式也应当类似..需要将数据库服务器的环境设置为zh_CN.gb
需要更改的环境包括:
LANG=zh_CN.gb
DBLANG=zhCN.gb
DB_LOCALE=zh_CN.gb
SERVER_LOCALE=zh_CN.gb
CLIENT_LOCALE=zh_CN.gb
[ 本帖最后由 liaosnet 于 2009-11-6 17:01 编辑 ] 可以非常肯定地告诉楼主,在你这个环境下,不可能解决这个问题。
悄悄地告诉你,除了换CSDK,你的一切努力都将是浪费时间。 今天做了下测试,在数据库服务器上的用户环境设置为
LANG=zh_CN.gb
DBLANG=zh_CN.gb
DB_LOCALE=zh_CN.gb
SERVER_LOCALE=zh_CN.gb
CLIENT_LOCALE=zh_CN.gb
WINDOWS下的CSDK的用户环境设置与服务端相同,可以通过winsql更改中文记录(不然直接在winsql中输入中文,但拷贝中文到界面上可以.).winsql也是通过ODBC连到数据库的..
使用的环境是:rhel4.7,ids11.40uc5 今天测试了一下..数据库环境为上面所说..
使用ODBC连库,然后使用ASP查询中文正常..
BTW:zh_CN.gb 即是GB2312,支持的汉字数约为6700多个,若不在这个范围内的可能有问题..
[ 本帖最后由 liaosnet 于 2009-11-30 16:42 编辑 ] 不好意思这么久才回来回帖
LANG=zh_CN.gb
DBLANG=zh_CN.gb
DB_LOCALE=zh_CN.gb
SERVER_LOCALE=zh_CN.gb
CLIENT_LOCALE=zh_CN.gb
我直接把下面这段copy到informix用户中的.bash_profile后重新登陆了一下。
然后在设置odbc-Environment-Use Server Database Locale时,只要点上这个复选框,Database Locale的值就自动变成en_US.819了。
然后执行asp的时候会提示:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
Error opening required code-set conversion object file.
**********************************************
。bash_profile文件:
echo "***********************************"
echo "* *"
echo "*1.DATABASE ADMIN - version10 *"
echo "* *"
echo "*2.SQL 4GL - version7*"
echo "* *"
echo "***********************************"
echo "please enter your choice: \c"
read CHOICE
case $CHOICE in
'1') INFORMIXDIR=/home/informix
PATH=$INFORMIXDIR/bin:$INFORMIXDIR/lib:$PATH
# LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:/home/informix/cognos:$INFORMIXDIR/version7/lib:$INFORMIXDIR/version7/lib/esql:/usr/bin/ld:$INFORMIXDIR/lib/esql:/home/informix/local_test:$INFORMIXDIR/lib/esql:/home/informix/dg_eos:$INFORMIXDIR/lib/esql:/home/informix/dg_jingsuan
# DBLANG=/home/informix/version7/en_us.0333
;;
'2') INFORMIXDIR=/home/informix/version7
LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql:$INFORMIXDIR/lib/tools
PATH=$INFORMIXDIR/bin:$INFORMIXDIR/lib:$PATH:/home/informix/cognos:$PATH:/home/informix/ywfx:$PATH:/home/informix/idscheck:$PATH:/home/informix/local_test:$PATH:/home/informix/dg_eos:$PATH:/home/informix/dg_jingsuan:.
HOME=/home/informix/versionn7
export HOME
cd $HOME
;;
*) echo "choice has to be 1 or 2, please retry"
sleep 3
exit
;;
esac
clear
INFORMIXSERVER=dgserver
ONCONFIG=onconfig.dgcx
INFORMIXSQLHOSTS=/home/informix/etc/sqlhosts
export INFORMIXSERVER INFORMIXDIR ONCONFIG PATH LIBPATH LD_LIBRARY_PATH INFORMIXSQLHOSTS
TERMCAP=$INFORMIXDIR/etc/termcap;export TERMCAP
#LC_ALL=zh.CN.GB18030
LANG="zh_CN.gb"
LANG=zh_CN.gb
DBLANG=zh_CN.gb
DB_LOCALE=zh_CN.gb
SERVER_LOCALE=zh_CN.gb
CLIENT_LOCALE=zh_CN.gb
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
export LANG LANGUAGE SUPPORTED SYSFONT
**********************************************
新手,还请多多指教。
页:
[1]
2