UNICODE GBK UTF-8等文本編碼

UNICODE,GBK,UTF-8區別

關於編碼ansi、GB23十二、unicode與utf-8的區別html

先作一個小小的試驗:程序員

在一個文件夾裏,把一個txt文本(文本里包含「今天的天氣很是好」這句話)分別另存爲ansi、unicode、utf-8這三種編碼的txt文件。而後,在該文件夾上點擊右鍵,選擇「搜索(E)…」。瀏覽器

搜索「天氣」二字,能夠搜索出ansi和unicode這兩種編碼的txt文件,搜索不出utf-8編碼的文件。markdown

緣由:網絡

1.中文操做系統默認ansi編碼,生成的txt文件默認爲ansi編碼,因此,能夠搜索出來。網站

2.unicode是國際通用編碼,因此,能夠搜索出來。編碼

3.utf-8編碼是unicode編碼在網絡之間(主要是網頁)傳輸時的一種「變通」和「橋樑」編碼。utf-8在網絡之間傳輸時能夠節約數據量。因此,使用操做系統沒法搜索出txt文本。url

按照utf-8創始人的願望:操作系統

端(unicode)——傳輸(utf-8)——端(unicode)code

可是,後來,許多網站開發者在開發網頁時直接使用utf-8編碼。

端(utf-8)——傳輸(utf-8)——端(utf-8)

因此,在瀏覽器上看到的編碼是:unicode(utf-8)。正由於在瀏覽器上這麼並列地列出unicode(utf-8),形成許多網友(甚至很多程序員)誤認爲unicode=utf-8。其實,按照utf-8創始人的原意,在開發網頁時使用utf-8編碼是錯誤的作法,而且,早期的瀏覽器也不支持解析utf-8編碼。可是,衆人的力量是巨大的,微軟不得不「趨炎附勢」,在瀏覽器上支持解析utf-8編碼。

問題是:utf-8編碼影響了網站開發者,或者說,網站開發者「擴展」了utf-8編碼的使用範圍。可是,網站開發者仍然沒法影響各種文檔的開發者,因此,word文檔和一些國際通用的文檔仍然使用unicode編碼而不使用utf-8編碼。

好比:「嚴」的Unicode碼是4E25,UTF-8編碼是E4B8A5,二者是不同的。

在中文和日文操做系統裏生成的(txt和xml)文件的編碼雖然都是ansi,可是,在簡體中文系統下,ansi 編碼表明 GB2312
編碼,在日文操做系統下,ansi 編碼表明 JIS 編碼。不一樣 ansi
編碼之間互不兼容,當信息在國際間交流時,沒法將屬於兩種語言的文字,存儲在同一段 ansi 編碼的文本中。

結論:國際文檔(txt和xml)使用unicode編碼是正宗作法;操做系統和瀏覽器都可以「理解」unicode編碼。瀏覽器「迫於壓力」才「理解」utf-8編碼。可是,操做系統有時只認unicode編碼。

Unicode與Unicode big endian的區別:你吃雞蛋時先吃小頭仍是先吃大頭?Unicode與Unicode big
endian的區別就是在編碼時小頭優先與大頭優先的區別。「隨波逐流」使用Unicode就OK了。
ref http://blog.sina.com.cn/s/blog_a547eff001012igt.html(簡潔明瞭)
ref http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html

ANSI編碼

不一樣的國家和地區制定了不一樣的標準,由此產生了 GB23十二、GBK、Big五、Shift_JIS 等各自的編碼標準。這些使用 1 至 4 個字節來表明一個字符的各類漢字延伸編碼方式,稱爲 ANSI 編碼。在簡體中文Windows操做系統中,ANSI 編碼表明 GBK 編碼;在日文Windows操做系統中,ANSI 編碼表明 Shift_JIS 編碼。 不一樣 ANSI 編碼之間互不兼容,當信息在國際間交流時,沒法將屬於兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。 固然對於ANSI編碼而言,0x00~0x7F之間的字符,依舊是1個字節表明1個字符。這一點是ASNI編碼與Unicode編碼之間最大也最明顯的區別。
ref http://baike.baidu.com/link?url=yt4s_FysZ9KUl4WxFeXyv5pHkQsvrRiZgWbU82EYj9XTfYmJgbZMe5mOYUbM3GsM7DR9rcFf4QRWbGuI9wQrVa(百度百科)

相關文章
相關標籤/搜索