1. 程式人生 > >SQLPlus中文亂碼問題解決方法——Windows10

SQLPlus中文亂碼問題解決方法——Windows10

  有一段時間沒敲過SQL了,今天覆習,想開啟SQLplus敲敲,結果不知道為什麼就亂碼了,很是無語,於是上網查找了下解決辦法,可是都沒用。
  網上提供最主要也是最有用的方法就是設定環境變數NLS_Lang。
  解決Oracle的客戶端亂碼問題的關鍵關鍵是要把伺服器端使用的字符集跟客戶端使用的字符集統一起來。而Oracle客戶端(Sqlplus)就是通過NLS_LANG環境變數來確定客戶端使用的字符集。
    NLS_LANG引數由以下部分組成:
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
NLS_LANG各部分含義如下:

LANGUAGE指定:
-Oracle訊息使用的語言
-日期中月份和日顯示

TERRITORY指定
-貨幣和數字格式
-地區和計算星期及日期的習慣

CHARACTERSET:
-控制客戶端應用程式使用的字符集

通常設定或者等於客戶端(如Windows)內碼表,或者對於unicode應用設定為UTF8

    而要設定NLS_Lang首先就要知道你的伺服器端的字符集是什麼,這個可以在SQLplus中以下程式碼檢視:
select userenv('language') from dual;
    知道後再設定電腦的環境變數NLS_LANG,將其設定成與之相同的字符集一般就解決了,但是,總是有那麼幾臺電腦愛抽風,比如說我的。。。

    我的電腦是win10的系統,雖然知道win10系統問題多,但就是不想換怎麼辦,那就要面對一些其他系統不會遇到的麻煩,比如說我的伺服器端顯示的字符集是:`SIMPLIFIED CHINESE_CHINA.AL32UTF8`,可是將NLS_LANG設定之後卻沒有一點用,依舊亂碼亂得很開心,之後我又按網上說的想去改登錄檔,結果發現Win10登錄檔裡完全沒那個選項。。。折騰了一上午,最後將嘗試將之改為了`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`後又恢復正常了。。。
    所以,希望其他依然堅持的用著Win10,然後遇到這個問題的朋友,看到不妨也試試這個,也許亂碼的問題就解決了。
    這僅僅只是我的個人經驗,經供參考。
    雖然問題是解決了,但卻是知其然而不知其所以然,如果路過的大神有知道的,希望可以指點下。
    如果有錯誤或是可以改進的地方,希望各位大神能指點一二。