About AL32UTF8html
ORACLE數據庫字符集,即Oracle全球化支持(Globalization Support), 或即國家語言支持(NLS)其做用是用本國語言和格式來存儲、處理和檢索數據。利用全球化支持,ORACLE爲用戶提供本身熟悉的數據庫母語環境,諸如日期格式、數字格式和存儲序列等。Oracle能夠支持多種語言及字符集,其中oracle8i支持48種語言、76個國家地域、229種字符集,而oracle9i則支持57種語言、88個國家地域、235種字符集。因爲oracle字符集種類多,且在存儲、檢索、遷移oracle數據時多個環節與字符集的設置密切相關,所以在實際的應用中,數據庫開發和管理人員常常會遇到有關oracle字符集方面的問題。字符集,實質就是按照必定的字符編碼方案,對一組特定的符號,分別賦予不一樣數值編碼的集合。Oracle數據庫最先支持的編碼方案是US7ASCII。
Oracle的字符集命名遵循如下命名規則:<Language><bitsize><encoding> 即: <語言><比特位數><編碼> 。
好比: AL32UTF8表示:AL,表明all,指使用全部語言;32,,32位;UTF8編碼。
查看環境變量發現:NLS_LANG=American_America.AL32UTF8,American表示語言;America表示地區;AL32UTF8字符集類型。數據庫
AL32UTF8和UTF8有什麼區別呢?Oracle的UTF8字符集由來已久,至少在8的時候就已經存在了,而對應的是UNICODE 3.0。而AL32UTF8字符集是9i纔出現的,其對應的是UNICODE 5.0。這兩種字符集的區別在於,UNICODE 5.0與3.0相比,又增長了一些新的補充字符。可是在實際當中,使用到這些新增字符的可能性很是小,所以絕大部分狀況下,選擇UTF8也是足夠的。AL32UTF8字符集是9i纔出現的,那麼對於9i之後的版本訪問沒有任何問題,可是對於8i及之前的版本,則不認識這個字符集。這就使得8i及更低版本的客戶端在訪問9i以上AL32UTF8的數據庫時,會碰到各類各樣的問題。所以,若是數據庫版本都在9i及其以上,不須要考慮ORACLE8的數據庫,建議使用AL32UTF8字符集,它採用的Unicode標準要比UTF8採用的Unicode標準更新,支持的字符也更多一些。若是要考慮ORACLE8數據庫,建議使用UTF8字符集,它的兼容性好,在ORACLE8及8I數據庫上使用AL32UTF8字符集容易出現問題。隨着如今版本11g逐漸開始稱爲主流版本,8i客戶端的狀況已經愈來愈少見了,所以在11.2的DBCA中,UTF8已經不是推薦字符集列表中的一員了。咱們在遇到不兼容的問題時就要修改字符集。oracle
Difference between UTF8 and AL32UTF8 character sets in Oracleapp
Recently, one of our clients had a question on the differences between these two character sets since they were in the process of making their application global. In an upcoming whitepaper, we will discuss in detail what it takes (from a RDBMS perspective) to address localization and globalization issues. As far as these two character sets go in Oracle, the only difference between AL32UTF8 and UTF8 character sets is that AL32UTF8 stores characters beyond U+FFFF as four bytes (exactly as Unicode defines UTF-8). Oracle’s 「UTF8」 stores these characters as a sequence of two UTF-16 surrogate characters encoded using UTF-8 (or six bytes per character). Besides this storage difference, another difference is better support for supplementary characters in AL32UTF8 character set.ide
About ZHS16GBKwordpress
zhs16gbk是中文字符集,也就是適合在中國用,只能存儲中文和英文字符,若是你存儲韓文則顯示爲亂碼(沒有編碼),而al32utf8是utf8字符集,u是unicode的意思,適合中文、韓語、日語等等不一樣的語言使用。那麼爲何咱們要在中國使用zhs16gbk存儲中文呢?這是由於utf8存儲中文的效率不如zhs16gbk,好比一個字「懂」,zhs16gbk採用2個字符存儲,而al32utf8採用3-4個字符存儲,這樣效率就有了高低之分。this
參考資源:
https://blog.csdn.net/LYN_BIGDREAM/article/details/7473278
https://decipherinfosys.wordpress.com/2007/01/28/difference-between-utf8-and-al32utf8-character-sets-in-oracle/
https://community.oracle.com/thread/3514820?start=0&tstart=0
https://www.cnblogs.com/xiaomia/archive/2010/11/28/1890072.html
https://www.zhihu.com/question/66582405
https://docs.oracle.com/cd/B14099_19/idmanage.1012/b14082/nls.htm#i627585
https://jelly.iteye.com/blog/654300
https://blog.51cto.com/dw008/934741
https://blog.csdn.net/baidu_32262373/article/details/51891991
https://blog.csdn.net/btt2013/article/details/54628768
https://www.jianshu.com/p/37010902457c編碼
https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:5783936214008spa
http://icu-project.org/repos/icu/data/trunk/charset/source/gb18030/gbkuni30.txt.net
https://www.cnblogs.com/morvenhuang/archive/2011/11/11/2245410.html