1. 程式人生 > >匯入Oracle資料庫中的漢字都是問號

匯入Oracle資料庫中的漢字都是問號

iamlaosong文

匯入伺服器Oracle資料庫中漢字都是問號“?”,查資料庫的字符集沒問題,那麼就是客戶端的問題。

查Oracle使用者的環境變數,發現沒有設定NLS_LANG,在.bash_profile檔案中增加:

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

重新匯入資料,漢字顯示正常。

另外,環境變數LANG用於Linux介面顯示,和Oracle資料庫無關。附一篇關於LANG的小網文備查。

一般來說要設定 Linux 系統的環境變數只需要在 /etc/profile (全域性) 或者 ~/.bashrc (單個使用者) 即可。但是對於 LANG 變數來說,有時候你即使在所有這些初始化腳本里面 export 過了,LANG 的值還是紋絲不動。實際上,你需要去修改 /etc/sysconfig/i18n 檔案裡面的內容。

vi /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

LANG="en_US"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh:zh_TW.UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

     用ssh登入LINUX時,ssh終端有時會出現亂碼,即使你設定LANG=en_US.UTF-8也一樣.我試過SecureCRT,OpenSSH,SSH Secure Shell的客戶端,都出現過這問題.有時更改一下客戶端的設定就好了,但是有時更改客戶端的設定後只能執行一次某個命令,之後又變成亂碼了.

     一個偶然的機會,在網上看到有人說將LANG變數的值改成"C"就行了.不過還真邪了,就來個LANG=C,什麼問題都解決了,也不用設定客戶端了,真是莫名其妙!不過到現在還不知道那個"C"是什麼意思,它咋就那麼厲害(其實隨便設定若干個個字母,或者直接置空:export LANG="",問題都能解決,只要不是zh_CN.UTF-8)