我使用以下命令来测试我的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
但我想要的是AL32UTF8。如何将编码更改为AL32UTF8。感谢〜
答案 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;