Oracle Database 12C 解決中文亂碼問題
PL/SQL Developer
1. Pl/SQL Developer 顯示中文亂碼問題
1.1 出現問題
1. 在PL/SQL Debeloper 執行更新語句是,如果插入的欄位內容有中文,出現亂碼,比如執行以下程式碼:update XTGL_DMJ_XBM set MC='其他性別'where DM=0
執行後查詢該表顯示如圖:
1.2解決問題
1. 首先通過語句查詢oracle伺服器端的編碼:
selectuserenv('language') from dual;
2. 查得oracle伺服器端使用什麼編碼,那麼在我們的客戶端需要和伺服器端的編碼保持一致。如伺服器端編碼為: USERENV(‘LANGUAGE’)=AMERICAN_AMERICA.AL32UTF8
顯示什麼編碼 就設定什麼編碼.因此在客戶端,需要設定環境變數:
在系統變數檢視有沒有NSL_LANG,如果沒有就新增該變數:
NLS_LANG = AMERICAN_AMERICA.AL32UTF8即可,如圖:
3. 然後重新啟動 pl/sql developer,這樣檢索出來的中文內容就不會是亂碼了。
1.3 環境配置註解
1. NLS_LANG格式:
NLS_LANG = language_territory.charset有三個組成部分(語言、地域和字符集),每個成分控制了NLS子集的特性。其中:language 指定伺服器訊息的語言。territory 指定伺服器的日期和數字格式。
1.4 其他解決方法
詳細版本:
如何設定客戶端字符集與伺服器端字符集一致:
執行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!