問題描述:
1、打開 plsql,執行 sql 語句,中文顯示亂碼:
解決辦法:
1)查看服務器端編碼
輸入 sql 語句: select userenv('language') from dual -- 查看數據庫字符集
我實際查到的結果為:AMERICAN_AMERICA.ZHS16GBK
2)執行 sql 語句 :select * from V$NLS_PARAMETERS -- 查看本地字符集
查看第一行中PARAMETER項中為NLS_LANGUAGE 對應的VALUE項中是否和第一步得到的值一樣。如果不是,需要設置環境變量,否則PLSQL客戶端使用的編碼和服務器端編碼不一致,插入中文時就會出現亂碼.
我實際查到的為AMERICAN
3)設置環境變量
計算機->屬性->高級系統設置->環境變量->新建
設置變量名:NLS_LANG,變量值:第1步查到的值,(這里的變量值需要與數據庫服務器相同) 我的是 AMERICAN_AMERICA.ZHS16GBK
4)重新打開 plsql,執行 sql 語句,問題解決
過程中遇到的問題:
注:當完成以上4個步驟時,查詢原來的記錄還是問號????,只有新插入的記錄才會正常顯示。不知道這個怎么解決?