如何在Windows中的SQLPlus中将Oracle编码更改为AL32UTF8

时间:2017-03-31 02:22:05

标签: oracle

我使用以下命令来测试我的Oracle当前编码

select userenv('language') from dual;
select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
select * from nls_database_parameters
select * from nls_instance_parameters
select * from nls_session_parameters

enter image description here

但我想要的是AL32UTF8。如何将编码更改为AL32UTF8。感谢〜

2 个答案:

答案 0 :(得分:6)

有两种方法可以设置它。

  • 作为环境变量NLS_LANG。暂时用

    SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8或您的计算机属性设置。

  • 在您HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG的注册表中,对于Windows 64位上的32位Oracle客户端,HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG

如果您设置两个环境变量优先。

请注意,当您设置NLS_LANG值时,您只需告诉Oracle数据库“我的客户端使用字符集AL32UTF8” - 这并不一定意味着您的客户端确实在使用AL32UTF8!

对于SQL * Plus,它继承了cmd.exe代码页中的字符集。您可以使用命令chcp查询和更改它,例如

C:\>chcp
Active code page: 850

C:\>chcp 65001
Active code page: 65001

C:\>sqlplus ...

请参阅Code Page Identifiers以获取代码页列表。

但是,根据您的屏幕截图,您使用基于Java的SQL Developer。 SQL Developer不依赖于NLS_LANG设置。检查工具中的值 - >偏好 - >环境 - >编码

答案 1 :(得分:-1)

打开你的控制台

sqlplus "/ as sysdba"

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter session set sql_trace=true;
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;

//For version before oracle 9i like 8i, using these two lines
SQL> alter database character set internal_use UTF8;
SQL> alter database national character set internal_use UTF8;
//For version after oracle 9i, using these two lines
SQL> alter database character set internal_use AL32UTF8;
SQL> alter database national character set internal_use AL32UTF8;

SQL> alter session set sql_trace=false;
SQL> shutdown immediate;
SQL> startup;