用vb上传数据到oracle中汉字全都是乱码!
客户端和服务器的系统都是2000,而且两个系统的字符集相同,都是US7ASCII。
我在客户端用ODBC连接服务器端数据库,上传的数据在服务器端都是乱码(只是汉字,其他的数字和字母都正常)。
我的数据是用vb程序插入oracle的.
vb程序是通过ODBC连接oracle的.数据库的版本是8.17的.
同时,我用xp系统(做客户端),oracle用8.05版本传数据时,一切正常(服务器端oracle为8.17版本,字符集都是US7ASCII)
问题点数:100、回复次数:5Top
1 楼daisy8675(莫依 沉迷)回复于 2004-12-03 21:56:09 得分 0
我没用过8.17的Top
2 楼aohan(aohan)回复于 2004-12-03 22:02:58 得分 0
应该还是字符集的问题Top
3 楼creazyfish(梳分头的鱼)回复于 2004-12-03 22:09:10 得分 100
1、检查服务器上Oracle数据库的字符集
SQL> conn sys/change_on_install
连接成功.
SQL> desc props$
列名 可空值否 类型
****************************--- ******** ****
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)
SQL> col value$ format a40
SQL> select name,value$ from props$;
NAME VALUE$
****************************-- ************************-
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3
查询到14记录.
NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。
SQL*Plus中修改方法:
SQL> update props$ set value$='新字符集' where name='NLS_CHARACTERSET';
操作系统中修改方法:
connect internal
alter database ORCL character set ZHS16GBK;
alter database ORCL national character set ZHS16GBK;
2、检查操作系统级Oracle汉字显示的字符集
运行regedit,定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
找到以下字符串
NLS_LANG
检查是否以下内容,如不是,改之
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(原:AMERICAN_AMERICA.WE8ISO8859P1)Top
4 楼ksfengcn123()回复于 2004-12-06 12:27:52 得分 0
关键现在他们用的字符集是US7ASCII的。Top
5 楼xianbin(悠游浪子)回复于 2005-04-08 13:12:24 得分 0
不知道有没有像SQL那样nChar/nVarChar/nText这类类型,因为他们是UNICODE,所以不存在这个问题.Top




