PL/Sql develop 查詢oracle數據庫內容亂碼/ 導出excel亂碼解決



一般都是系統字符集和oracle數據庫字符集不同而導致


解決如下:


在windows中創 建一個名爲“NLS_LANG”的系統環境變量,設置其值爲“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,
然後重新啓動 pl/sql developer,這樣檢索出來的中文內容就不會是亂碼了。

如果想轉換爲UTF8字符集,可以賦予“NLS_LANG”爲 “AMERICAN_AMERICA.UTF8”,然後重新啓動 pl/sql developer。其它字符集設置同上





令附:

oracle NLS_LANG詳解
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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章