客户端和服务器的系统都是2000,而且两个系统的字符集相同,都是US7ASCII。我在客户端用ODBC连接服务器端数据库,上传的数据在服务器端都是乱码(只是汉字,其他的数字和字母都正常)。我的数据是用vb程序插入oracle的.
vb程序是通过ODBC连接oracle的.数据库的版本是8.17的.同时,我用xp系统(做客户端),oracle用8.05版本传数据时,一切正常(服务器端oracle为8.17版本,字符集都是US7ASCII)

解决方案 »

  1.   

    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)
      

  2.   

    关键现在他们用的字符集是US7ASCII的。
      

  3.   

    不知道有没有像SQL那样nChar/nVarChar/nText这类类型,因为他们是UNICODE,所以不存在这个问题.