關於Oracle,作業系統,客戶端字符集的最佳設定(zt)

tolywang發表於2007-09-22

關於字符集的設定,最好的方式是:


資料庫字符集 - unicode
客戶端字符集=作業系統字符集


http://www.itpub.net/showthread.php?threadid=838447&pagenumber=

將資料庫的字符集設定到足夠大,最好是unicode。( 相同的字元,在不同的字符集裡對應的編碼可能是不一樣的) .
這時候即使發生字元轉換,也不會出現問題,因為這個字符集包含了所以其他字符集的字元。
之所以要將客戶端字符集設定成和作業系統字符集一致,就是避免顯示問題。如果將客戶端字符集設定和資料庫一致,有一個危險的地方就是,此時資料庫不在對輸入字元作字元轉換,如果你實際輸入的字元編碼並不是字符集編碼,那樣就會出問題了 。

-----------------

在實際的環境中除了字元顯示之外,還有其他的地方會涉及到字符集問題。比如:
1:exp/imp
2:sql*lorder
3:應用程式的字元輸入
......
一個誤區:
看到很多人在出現亂碼的時候都首先要做的就是將客戶端字符集設定和資料庫一致,其實這是沒有太多根據的。
設想一下,假如資料庫字符集是al32utf8,裡面儲存這一些中文字元,而我的客戶端作業系統是英文的,此時我將客戶端的nls_lang設定成al32utf8,這樣會解決問題嗎?這樣客戶端就能顯示中文了嗎?客戶端就能輸入中文了嗎?現在客戶端是英文的,它的字符集里根本就沒有漢字的編碼,我們簡單的修改一下客戶端的字符集又有什麼用?前面已經討論了,這個設定無非就是告訴oracle我將以什麼樣的字符集與資料庫進行資料交換,對於解決亂碼問題毫無關係。
正確的做法是將客戶端的作業系統改成支援中文字元,並將客戶端字符集改成和作業系統一致的字符集,這樣才能真正的解決問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84906/,如需轉載,請註明出處,否則將追究法律責任。

相關文章