我所理解的字符编码
1,Ascii和ebcic.
為了方便交流,美國人發明了ASCII編碼,后來被確認為國際標準。后來以發明了EBCDIC編碼。
一般地說,開放的操作系統(LINUX 、WINDOWS等)采用ASCII 編碼,而大型主機系統(MVS 、OS/390等)采用EBCDIC 編碼。在發送數據給對方前,需要事先告知對方自己所使用的編碼,或者通過轉碼,使不同編碼方案的兩個系統可溝通自如。無論是ASCII碼還是EBCDIC碼,都無法對擁有幾萬個的漢字進行編碼。
2、MBCS
為了擴充ascii,不同的國家和地區制定了不同的標準。以中國和日本為例,發布了gb2312,gbk,gis等,他們的大致編碼方式是不管理中文、英文等都使用兩個字符來表示一個字符。統稱為ansi編碼,又稱為多字節字符集MBCS.這時,不同國家和地區的編碼不能相互轉換,后來,國際就發布了unicode編碼,作為聯接各國的編程。盡管現在的unicode并不能真正聯接萬國,但其目的是這樣的。所以,有人叫unicode為萬國編碼。
Unicode變成所有編碼轉換的中間介質。所有的編碼都有一個轉換器可以轉換到Unicode,而Unicode也可以轉換到其他所有的編碼。
3、GB-2312
GB-2312屬于ansi編碼的一種,GB 2312是一個簡體中文字符集,由6763個常用漢字和682個全角的非漢字字符組成。由于字符數量比較大,GB2312采用了二維矩陣編碼法對所有字符進行編碼。首先構造一個94行94列的方陣,對每一行稱為一個“區”,每一列稱為一個“位”,然后將所有字符依照下表的規律填寫到方陣中。這樣所有的字符在方陣中都有一個唯一的位置,這個位置可以用區號、位號合成表示,稱為字符的區位碼。如第一個漢字“啊”出現在第16區的第1位上,其區位碼為1601。因為區位碼同字符的位置是完全對應的,因此區位碼同字符之間也是一一對應的。這樣所有的字符都可通過其區位碼轉換為數字編碼信息。
4、GBK
GBK即漢字內碼擴展規范,K為擴展的漢語拼音中“擴”字的聲母。GBK編碼標準兼容GB2312,共收錄漢字21003個、符號883個,并提供1894個造字碼位,簡、繁體字融于一庫。
5、unicode
如果有一種編碼,將世界上所有的符號都納入其中,無論是英文、日文、還是中文等,大家都使用這個編碼表,就不會出現編碼不匹配現象。每個符號對應一個唯一的編碼,亂碼問題就不存在了。這就是Unicode編碼。
Unicode當然是一個很大的集合,現在的規模可以容納100多萬個符號。每個符號的編碼都不一樣,比如,U+0639表示阿拉伯字母Ain,U+0041表示英語的大寫字母A,“漢”這個字的Unicode編碼是U+6C49。
Unicode固然統一了編碼方式,但是它的效率不高,比如UCS-4(Unicode的標準之一)規定用4個字節存儲一個符號,那么每個英文字母前都必然有三個字節是0,這對存儲和傳輸來說都很耗資源。
6、utf-8
為了提高Unicode的編碼效率,于是就出現了UTF-8編碼。UTF-8可以根據不同的符號自動選擇編碼的長短。比如英文字母可以只用1個字節就夠了。
?
轉載于:https://www.cnblogs.com/lyzfp/p/11421328.html
總結
- 上一篇: 求一个16个字的个性签名
- 下一篇: MyBatis基础-CRUD