SQL > select * from V$NLS_PARAMETERS 查询出来的结果是NLS_CHARACTERSET ZHS16GBK运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服务器端相同 的 字 符 集(本例为:AMERICAN_AMERICAN.ZHS16GBK)。 
但是Oracle内 数据还是出现乱码 怎么弄呢?

解决方案 »

  1.   

    --服务器端字符集
    select * from nls_database_parameters--客户端字符集
    select * from nls_instance_parameters保证服务器端字符集和客户端字符集一致就可以了
      

  2.   

    SQL> select * from nls_database_parameters;PARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE                   AMERICAN
    NLS_TERRITORY                  AMERICA
    NLS_CURRENCY                   $
    NLS_ISO_CURRENCY               AMERICA
    NLS_NUMERIC_CHARACTERS         .,
    NLS_CHARACTERSET               US7ASCII
    NLS_CALENDAR                   GREGORIAN
    NLS_DATE_FORMAT                DD-MON-RR
    NLS_DATE_LANGUAGE              AMERICAN
    NLS_SORT                       BINARY
    NLS_TIME_FORMAT                HH.MI.SSXFF AMPARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR
    NLS_DUAL_CURRENCY              $
    NLS_COMP                       BINARY
    NLS_LENGTH_SEMANTICS           BYTE
    NLS_NCHAR_CONV_EXCP            FALSE
    NLS_NCHAR_CHARACTERSET         AL16UTF16
    NLS_RDBMS_VERSION              9.2.0.1.020 rows selected.
    SQL>  select * from nls_instance_parameters;PARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_LANGUAGE                   AMERICAN
    NLS_TERRITORY                  AMERICA
    NLS_SORT
    NLS_DATE_LANGUAGE
    NLS_DATE_FORMAT
    NLS_CURRENCY
    NLS_NUMERIC_CHARACTERS
    NLS_ISO_CURRENCY
    NLS_CALENDAR
    NLS_TIME_FORMAT
    NLS_TIMESTAMP_FORMATPARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_TIME_TZ_FORMAT
    NLS_TIMESTAMP_TZ_FORMAT
    NLS_DUAL_CURRENCY
    NLS_COMP
    NLS_LENGTH_SEMANTICS           BYTE
    NLS_NCHAR_CONV_EXCP            FALSE17 rows selected.
      

  3.   

    这是你的服务器端的字符集:
    NLS_CHARACTERSET US7ASCII
    这是你的客户端的字符集:
    NLS_CHARACTERSET ZHS16GBK所以你需要修改客户端的字符集,保持与服务器端一致。
      

  4.   

    并非与服务器端一致就不会乱码的,oracle本身会进行客户端和服务器端字符转换的,只要客户端的字符集和操作系统的字符集一致才可以的
      

  5.   

    这个问题需要讨论一下,是不是这个原因:US7ASCII是ZHS16GBK的子集?