Windows常用中文字符集set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK


1. NLS_LANG 參數組成
NLS_LANG參數由以下部分組成:
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_LANG各部分含義如下:
LANGUAGE指定:
-Oracle消息使用的語言
-日期中月份和日顯示
TERRITORY指定
-貨幣和數字格式
-地區和計算星期及日期的習慣
CHARACTERSET:
-控制客戶端應用程序使用的字符集
通常設置或者等於客戶端(如Windows)代碼頁
或者對於unicode應用設置為UTF8
在Windows上查看當前系統的代碼頁可以使用chcp命令:
E:\>chcp
活動的代碼頁: 936
代碼頁936也就是中文字符集 GBK,在Microsoft的官方站點上,我們可以遭到關於936代碼頁的具體編碼規則,請參考以下鏈接:
http://www.microsoft.com/globaldev/reference/dbcs/936.htm

2. 查看 NLS_LANG 的方法
Windows使用:
echo %NLS_LANG%
如:
E:\>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK
Unix使用:
env|grep NLS_LANG
如:
/opt/oracle>env|grep NLS_LANG
NLS_LANG=AMERICAN_CHINA.ZHS16GBK
Windows客戶端設置,可以在注冊表中更改NLS_LANG,具體鍵值位於:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
xx指存在多個ORACLE_HOME時系統編號。

3. 查看數據庫當前字符集參數設置
SELECT * FROM v$nls_parameters;

4. 查看數據庫可用字符集參數設置
SELECT * FROM v$nls_valid_values;

5. 客戶端 NLS_LANG 的設置方法
Windows:
# 常用中文字符集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字符集
set NLS_LANG=american_america.AL32UTF8
可以通過修改注冊表鍵值永久設置
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
Unix:
# 常用unicode字符集
export NLS_LANG=american_america.AL32UTF8
# 常用中文字符集
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
可以編輯 bash_profile 文件進行永久設置
vi .bash_profile
NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG
# 使 bash_profile 設置生效
source .bash_profile
=================================================================================
[Q]怎么樣查看數據庫字符集  
  [A]數據庫服務器字符集select * from nls_database_parameters,其來源於props$,是表示數據庫的字符集。
  
  客戶端字符集環境select * from nls_instance_parameters,其來源於v$parameter,
  
  表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表
  
  會話字符集環境 select * from nls_session_parameters,其來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
  
  客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。如果多個設置存在的時候,alter session>環境變量>注冊表>參數文件
  
  字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
  
  [Q]怎么樣修改字符集
  
  [A]8i以上版本可以通過alter database來修改字符集,但也只限於子集到超集,不建議修改props$表,將可能導致嚴重錯誤。
  
  Startup nomount;
  Alter database mount exclusive;
  Alter system enable restricted session;
  Alter system set job_queue_processes=0;
  Alter database open;
  Alter database character set zhs16gbk;


[Q]怎么樣查看數據庫字符集  
  [A]數據庫服務器字符集select * from nls_database_parameters,其來源於props$,是表示數據庫的字符集。
  
  客戶端字符集環境select * from nls_instance_parameters,其來源於v$parameter,
  
  表示客戶端的字符集的設置,可能是參數文件,環境變量或者是注冊表
  
  會話字符集環境 select * from nls_session_parameters,其來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。
  
  客戶端的字符集要求與服務器一致,才能正確顯示數據庫的非Ascii字符。如果多個設置存在的時候,alter session>環境變量>注冊表>參數文件
  
  字符集要求一致,但是語言設置卻可以不同,語言設置建議用英文。如字符集是zhs16gbk,則nls_lang可以是American_America.zhs16gbk。
  
  [Q]怎么樣修改字符集
  
  [A]8i以上版本可以通過alter database來修改字符集,但也只限於子集到超集,不建議修改props$表,將可能導致嚴重錯誤。
  
  Startup nomount;
  Alter database mount exclusive;
  Alter system enable restricted session;
  Alter system set job_queue_process=0;
  Alter database open;
  Alter database character set zhs16gbk;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM