linux 下oracle 10g sqlplus中文顯示和輸入的問題

來源:互聯網
上載者:User

一般情況下我們用的Oracle編碼是UTF-8的

首先我們使用的用戶端securityCRT設定了字元編碼 是utf8,即使Sqlplus查詢正確並返回相應UTF-8格式的值也是不能正確顯示滴.

export LANG=zh_CN.UTF-8
(登陸時前台的編碼問題)

LANG變數是language的簡稱,這個變數是決定系統的預設語言的,即系統的菜單、程式的工具列語言、IME預設語言等。
LANG變數清空,由於英語是無論什麼情況都支援的,LANG變數被清空後,系統就預設用英語。這樣設定後,在字元模式下輸出的出錯資訊等就是全英文的了。但這種設定是臨時的,只是臨時改變了LANG這個bash變數而已。當退出重新登入或者切換到其他字元終端後就無效了。

export
NLS_LANG=AMERICAN_AMERICA.UTF8
(解決sqlplus中 oracle中前台編碼問題)

“NLS_LANG和資料庫的字元集一樣或許是正確的,但是經常是不對的。不要認為NLS_LANG必須和資料庫的字元集一樣,這經常是錯的。” 《循序漸進Oracle》中說NLS_LANG一樣的話可以提高效能,因為不需要字元集的轉換。其實這樣的轉換不時發生在Server端,Client端 轉換完成後傳遞給Server端。我覺得,只要NLS_LANG是Server的字元集的子集就可以。

“NLS_LANG的字元集設定不會更改Client端的字元集。它只是用來告訴Oracle你在Client端使用什麼字元集,你不能通過設定NLS_LANG去影響Client的字元集”。而且如果Client端的字元集和NLS_LANG不相容,會導致資料庫亂碼。

“如果你不在Client端設定NLS_LANG,那麼預設會使用Server的NLS_LANG設定,這是錯的。如果Oracle在安裝時沒有
設定NLS_LANG,那麼NLS_LANG不會另外再設定,而是使用預設值:AMERICAN_AMERICA.US7ASCII。語言是
AMERICAN,地區是AMERICA,字元集US7ASCII”

“設定NLS_LANG的LANGUAGE 和
TERRITORY部分不會影響儲存在資料庫的字元。將NLS_LANG設定為JAPANESE_JAPAN.WE8MSWIN1252不會允許你儲存日
文。因為WE8MSWIN1252字元集不支援日文。但是設定成AMERICAN_AMERICA.JA16SJIS會允許你儲存日文,假設你輸入的字元
是JA16SJIS,並且資料庫的字元集也支援日文(如UTF8或者JA16SJIS)”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.