PL/SQL Developer 顯示中文亂碼問題
簡單版本:
首先,通過
select userenv('language') from dual;
查詢oracle服務器端的編碼, 如爲: AMERICAN_AMERICA.US7ASCII 顯示什麼編碼 就設置什麼編碼
在我們的客戶端需要和服務器端的編碼保持一致。
因此在客戶端,需要設置環境變量: NLS_LANG = AMERICAN_AMERICA.US7ASCII 即可。
以上是默認編碼
GBK如下:
在windows中創建一個名爲“NLS_LANG”的系統環境變量,設置其值爲“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,然後重新啓動 pl/sql developer,這樣檢索出來的中文內容就不會是亂碼了。
UTF-8如下:
如果想轉換爲UTF8字符集,可以賦予“NLS_LANG”爲 “AMERICAN_AMERICA.UTF8”,然後重新啓動 pl/sql developer。
其它字符集設置同上。
NLS_LANG格式:
NLS_LANG = language_territory.charset
有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。其中:language 指定服務器消息的語言。territory 指定服務器的日期和數字格式。charset 指定字符集。
詳細版本:
如何設置客戶端字符集與服務器端字符集一致:
運行REGEDIT,第一步選HKEY_LOCAL_MACHINE,第二步選擇SOFTWARE,第三步選擇 Oracle,第四步選擇 NLS_LANG,鍵入與服務器端相同的字符集。
例如:AMERICAN_AMERICA.UTF8或者SIMPLIFIED CHINESE_CHINA.ZHS16GBK
oracle 10g裝上後,建了個表寫入中文數據,發現通過工具PL/SQL Developer中文不能正常顯示.
要正常顯示中文,就必須得服務器和客戶端編碼一致才行。於是檢查:
1.檢查服務器編碼:
執行SQL語法:
select * from v$nls_parameters;
也可以參照/home/oracle/.bash_profile 相關語言設置.
可以看到我的相關設置是:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
2.設置本地客戶端編碼:
進入我的電腦,屬性,高級,環境變量,添加2項:
LANG=zh_CN.GBK
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
如圖:
3.重新連接sqlplus,查看數據:
顯示正常.
4.PL/SQL Developer設置並重新連接:
在pl/sql developer的菜單->tools->preferences->user interface->fonts 中修改爲中文字體
重新連接,如圖:
顯示正常.OK!
如果圖片看不到,可以查看附件。