1. 程式人生 > >Oracle Database 12C 解決中文亂碼問題

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 指定伺服器的日期和數字格式。

charset 指定字符集。

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!