用select * from v$nls_parameters查询得到如下结果:SQL> select * from v$nls_parameters;PARAMETER                                                        VALUE
---------------------------------------------------------------- ----------------------------------------------------------------
NLS_LANGUAGE                                                     SIMPLIFIED CHINESE
NLS_TERRITORY                                                    CHINA
NLS_CURRENCY                                                     RMB
NLS_ISO_CURRENCY                                                 CHINA
NLS_NUMERIC_CHARACTERS                                           .,
NLS_CALENDAR                                                     GREGORIAN
NLS_DATE_FORMAT                                                  DD-MON-RR
NLS_DATE_LANGUAGE                                                SIMPLIFIED CHINESE
NLS_CHARACTERSET                                                 ZHS16GBK
NLS_SORT                                                         BINARY
NLS_TIME_FORMAT                                                  HH.MI.SSXFF AM
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                                                RMB
NLS_NCHAR_CHARACTERSET                                           AL16UTF16
NLS_COMP                                                         BINARY
NLS_LENGTH_SEMANTICS                                             BYTE
NLS_NCHAR_CONV_EXCP                                              FALSE============================================
NLS_NCHAR_CHARACTERSET   AL16UTF16 如何变成UTF8 ???

解决方案 »

  1.   

    如果是新系统,重新安装得了.
    如果是老系统,建议做好完备的备份,因为你的这个变换极有可能出现数据丢失!!!!
    一般是utf8变到utf16,反变没有听数过;过程如下你试试吧:
    sqlplus "/ as sysdba"
    SQL> SHUTDOWN IMMEDIATE
    SQL> STARTUP MOUNT
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
    SQL> ALTER DATABASE OPEN
    SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
    SQL> SHUTDOWN IMMEDIATE
    SQL> STARTUP--另外一种方法。这个命令是当你选择了使用典型方式创建了种子数据库以后,Oracle会根据你选择的字符集设置,把当前种子数据库的字符集更改为期望字符集,这就是这条命令的作用. 在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,做好备份;
    alter database character set INTERNAL_CONVERT/ INTERNAL_USE ZHS16GBK 
      

  2.   

    你有xml数据吗?AL16UTF16 与utf8的区别主要在于xml这一块,当然在修改前最好备份作好.
      

  3.   

    生产环境是UTF8,用EXP备份出来的库导入测试环境,NVARCHAR2数据类型的会变成乱码,测试环境的数据库是AL16UTF16
      

  4.   

    做好备份
    UPDATE PROPS$ SET NLS_CHARACTERSET='UTF8'
    客户端的nls_lang也设为UTF8
      

  5.   

    客户端的nls_lang怎么设置为UTF8????客户端windows xp+oracle 9.2.0.7