问题描述
如题,英文操作系统,用C#开发的程序,查询ORACLE数据库,查询结果是汉字时,结果为乱码;当查询条件中有汉字时,查询不成功。前台和数据库显示正常,请高手指点!多谢!
解决方案
解决方案二:
在英文系统下安装中文语言库
解决方案三:
用的pl/sql改一下语言包试试,在菜单->Tools->preferences->UserInterface->Appearance->Language选择Chinese.lang。
解决方案四:
英文系统中缺少中文字符集
解决方案五:
3楼正解~~数据库是内置有中文字符集的,但是英文OS无法显示中文,只能作乱码处理,所以要给英文OS提供中文语言包支持~
解决方案六:
引用楼主vbagcl的回复:
如题,英文操作系统,用C#开发的程序,查询ORACLE数据库,查询结果是汉字时,结果为乱码;当查询条件中有汉字时,查询不成功。前台和数据库显示正常,请高手指点!多谢!
字符集的问题。不仅中英文有这种差别,同样是中文,在不同的操作系统
解决方案七:
字符集的问题。不仅中英文有这种差别,同样是中文,在不同的操作系统也可能有乱码现象出现。
解决方案八:
多谢各位指导。我可能没有说清楚,在客户端,也就是安装英文操作系统的电脑上,中文显示正常。在ORACLE服务器段,中文也能正常显示,就是用安装英文操作系统向服务器发送查询请求,查询条件中有汉字,查询结果为空。我把前台的查询语句保存到后台,中文显示乱码。
解决方案九:
我描述的再详细点。有一台电脑,安装ORACLE数据库,为叙述方便,下面称这台电脑为服务器。有一个电脑,安装win7英文系统。为叙述方便,下面把这台电脑称为:客户端。在客户端上中文文件中的中文显示正常。在客户端上安装oracle客户端,连接服务器。在客户端上安装toad,利用toad执行利用selectuserenv(’language’)fromdual;获得的结果是:AMERICAN_AMERICA.AL32UTF8在客户端上安装vs2010,利用C#开发程序,执行select*fromaawherechi_fld='清'当然,aa是服务器中的一个表,其中有两个字段:eng_fld,chi_fld.有一条记录:eng_fldchi_fldclear清查询结果为空。将select*fromaawherechi_fld='清'复制到toad中,注意toad也是安装在客户端上的,查询结果是eng_fldchi_fldclear清在客户端C#程序中执行selectchi_fldfromaawhereeng_fld='clear',查询结果是乱码。这个已经好几天了,着急啊!没有办法,我想利用ASCII码。在toad中执行selectascii('清')fromdual结果是15120517在客户端C#程序中利用byte[]array=System.Text.Encoding.Default.GetBytes(hz);获取清的编码是199229.咋办啊,实在没有办法了,请各位高手指点指点吧。多谢啦。
解决方案十:
咋没人回呢?
解决方案十一:
客户机上中文文件显示正常,不代表跟服务器通信的时候使用中文也会正常支持中文的字符集有很多种,比如UTF8,GB2312,Unicode等如果你客户机的字符集和服务器的字符集不匹配,那么分别显示中文都能正常显示,但是客户机将中文发送给服务器,服务器会不认识这就好比中国大陆用简体中文,中国台湾用繁体中文,日本也有汉字,有些是繁体字,有些是自己改造的,他们自己都能看懂,互相看就看不懂
解决方案十二:
引用10楼Z65443344的回复:
客户机上中文文件显示正常,不代表跟服务器通信的时候使用中文也会正常支持中文的字符集有很多种,比如UTF8,GB2312,Unicode等如果你客户机的字符集和服务器的字符集不匹配,那么分别显示中文都能正常显示,但是客户机将中文发送给服务器,服务器会不认识这就好比中国大陆用简体中文,中国台湾用繁体中文,日本也有汉字,有些是繁体字,有些是自己改造的,他们自己都能看懂,互相看就看不懂
大概明白你的意思,但是现在该怎么办呢,多谢指点!
解决方案十三:
你在查询语句中表示汉字时是否使用VARCHAR2datatype?
解决方案十四:
估计是你的Oracle客户端的字符集与服务器端不匹配,需要更改客户端或者服务器端的字符集,要设为一样。http://www.cnblogs.com/crazybruce/archive/2013/03/29/2988946.html
解决方案十五:
引用13楼wind_cloud2011的回复:
估计是你的Oracle客户端的字符集与服务器端不匹配,需要更改客户端或者服务器端的字符集,要设为一样。http://www.cnblogs.com/crazybruce/archive/2013/03/29/2988946.html
多谢指点!selectuserenv(’language’)fromdual;获得的结果是:AMERICAN_AMERICA.AL32UTF8在客户端设置环境变量为:AMERICAN_AMERICA.AL32UTF8查询条件有中文时,还是不行呢!是否需要将数据库的改为中文字符集呢。
解决方案:
我记得要在注册表里修改,
解决方案:
引用15楼wind_cloud2011的回复:
我记得要在注册表里修改,
正解
解决方案:
我看了一下注册表,注册表的NLS_LANG也自动改过了。咋还不行呢!
解决方案:
NLS_LANG所在位置是:hkey_current_userenvironmentnls_lang
解决方案:
以前都忘记了,只能帮你找找了。看看这个方法,http://www.tuicool.com/articles/z2Yj6nZ