Chinaunix

标题: asp页面输入中文字符查询时报错 [打印本页]

作者: scorpioer    时间: 2009-11-06 10:49
标题: asp页面输入中文字符查询时报错
informix server:IBM Informix Dynamic Server Version 10.00.FC8
informix codeset:
dbs_dbsname  sysmaster
dbs_collate  en_US.819

asp webserver: Windows2003 +IIS + IBM Informix  Client-SDK 2.90

odbc client locale:en_US.819

odbc database locale:en_US.819

setnet32  config: 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 编辑 ]
作者: 3sane    时间: 2009-11-06 10:54
标题: 回复 #1 scorpioer 的帖子
可以在服务器端看看你链接的session返回的信息,比如SQL语句,sqlcode等,另外可以用excel用这个ODBC的数据源倒些带中文的表看看?
我反而碰到把字符集设成zh_CN.gb反而有问题,用en_US.819却好了
作者: scorpioer    时间: 2009-11-06 11:19
我导出来的中文数据是正常显示的呀,我是在asp页面中输入中文姓名,然后想通过中文姓名查找出相关信息的时候报错啊
作者: scorpioer    时间: 2009-11-06 16:53
自己顶上去
作者: ziggler    时间: 2009-11-06 16:59
找支持中文的ODBC驱动。
作者: liaosnet    时间: 2009-11-06 16:59
标题: 回复 #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 编辑 ]
作者: MicroHard    时间: 2009-11-06 21:38
可以非常肯定地告诉楼主,在你这个环境下,不可能解决这个问题。

悄悄地告诉你,除了换CSDK,你的一切努力都将是浪费时间。
作者: liaosnet    时间: 2009-11-26 22:44
今天做了下测试,在数据库服务器上的用户环境设置为
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
作者: liaosnet    时间: 2009-11-30 16:41
今天测试了一下..数据库环境为上面所说..
使用ODBC连库,然后使用ASP查询中文正常..

BTW:zh_CN.gb 即是GB2312,支持的汉字数约为6700多个,若不在这个范围内的可能有问题..

[ 本帖最后由 liaosnet 于 2009-11-30 16:42 编辑 ]

1.png (16.64 KB, 下载次数: 76)

1.png

作者: scorpioer    时间: 2010-01-11 18:34
不好意思这么久才回来回帖

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'
[Informix][Informix ODBC Driver][Informix]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/binINFORMIXDIR/libPATH
#    LD_LIBRARY_PATH=$INFORMIXDIR/libINFORMIXDIR/lib/esql:/home/informix/cognosINFORMIXDIR/version7/libINFORMIXDIR/version7/lib/esql:/usr/bin/ldINFORMIXDIR/lib/esql:/home/informix/local_testINFORMIXDIR/lib/esql:/home/informix/dg_eosINFORMIXDIR/lib/esql:/home/informix/dg_jingsuan
#    DBLANG=/home/informix/version7/en_us.0333
    ;;
'2') INFORMIXDIR=/home/informix/version7
    LD_LIBRARY_PATH=$INFORMIXDIR/libINFORMIXDIR/lib/esqlINFORMIXDIR/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

**********************************************


新手,还请多多指教。

asdf.JPG (45.34 KB, 下载次数: 70)

asdf.JPG

作者: liaosnet    时间: 2010-01-11 22:53
原帖由 scorpioer 于 2010-1-11 18:34 发表
不好意思这么久才回来回帖

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后重新登陆了一 ...


需要重建库~

直接更改用户的环境,并不能改变数据库的初始字符集..




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2