使用PLSQL Developer和DbVisualizer查詢oracle數據庫時,出現查詢數據中文亂碼情況。
查看了一下數據庫編碼格式
select * from v$nls_parameters;

查看編碼值為WE8ISO8859P1。而電腦環境變量NLS_LANG的值為AMERICAN_AMERICA.ZHS16GBK。更改為
AMERICAN_AMERICA.WE8ISO8859P1之后重啟工具就好了。如果沒有此環境變量,可以新建一個,將編碼值更改為一致。
我的機器到此就好使了,據說有的需要更改注冊表中值。
運行---->regedit-------->F3查找NLS_LANG----->修改注冊表(謹慎)
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMEO/NLS_LANG
該項值改為和數據庫服務端一致
注:如果不放心,修改該鍵值:HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/ALL_HOMES/ID0/NLS_LANG。

注意:配置環境變量的方式,可能導致SqlDBx亂碼,運行編碼相關文件后,需要去除環境變量,SqlDBx才好使。
附: http://www.2cto.com/database/201307/227445.html
PLSQL顯示亂碼-無法進行中文條件查詢解決
原因:
PLSQL亂碼問題皆是ORACLE服務端字符集編碼與PLSQL端字符集編碼不一致引起。類似亂碼問題都可以從編碼是否一致上面去考慮。
解決:
1. 查詢
Oracle服務端字符集編碼,獲取NLS_CHARACTERSET字段值:
執行
sql代碼 select * from v$nls_parameters
保存查詢到的值,如:NLS_CHARACTERSET = AL32UTF8
2. 查詢Oracle服務端語言信息:
執行
sql代碼 NLS_CHARACTERSET SELECT 'AMERICAN_AMERICA.' || PROPERTY_VALUE FROM DATABASE_PROPERTIES
保存查詢到的值,如:AMERICAN_AMERICA.AL32UTF8
3. 設置本地環境變量。(PLSQL優先從環境變量中獲取屬性)
右擊 我的電腦 -> 屬性 -> 告警
系統屬性 -> 高級 -> 環境變量 -> 系統變量欄
新增如下兩條記錄:
NLS_CHARACTERSET = AL32UTF8 NLS_LANG = AMERICAN_AMERICA.AL32UTF8
4. 重啟PLSQL,OK。
