cmd 命令列模式下輸出中文時顯示亂碼的解決方案

楊奇龍發表於2009-10-28

cmd 命令行模式下輸出中文時顯示亂碼的解決方案

因為發現預設值->屬性視窗中已是936了,只好透過登錄檔直接改動:HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe下的項CodePage項值改為十進位制"936"值或 十六進位制"000003a8"值。說明一下: 十六進位制"000003a8"或十進位制"936",表示"936 (ANSI/OEM - 簡體中文 GBK)"。
 有時侯,oracle——SQLPLUS亂碼也是由於此問題引起的。所以當你透過

1. 檢視 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

PLSQL Developer之類Windows客戶端設定,可以在登錄檔中更改NLS_LANG,具體鍵值位於:
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
xx指存在多個ORACLE_HOME時系統編號。


2. 檢視資料庫當前字符集引數設定
SELECT * FROM v$nls_parameters;

select * from nls_database_parameters

select userenv(‘language’) from dual;

3. 檢視資料庫可用字符集引數設定
SELECT * FROM v$nls_valid_values;


4. 客戶端 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

這幾種方法解決不了時,就可以使用修改登錄檔中的codepage的值來 解決。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-617623/,如需轉載,請註明出處,否則將追究法律責任。

相關文章