ISO8859-1、UTF-8 與GB2312

來源:互聯網
上載者:User

 ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字元。 而gb2312是標準中文字元集。 但是 ISO 10646 碼有下列問題: UTF-16 或 Unicode 是 16-bit 固定長度的編碼,並沒有比 Big5 或 GB2312 碼提供更大的容納空間。而 8-bit 不定長 (variable-length) 的編碼,每個中文字使用 3 個位元組 (byte)。 這意味著使用 UTF-8 編碼的 XML 檔案會比使用 Big5 碼的檔案大上 50%。但是假如使用
ASCII 碼的標示 (Markup),檔案就不會大這麼多了。 標示大約會佔檔案的 50%。可能要使檔案大小減少的方式就是採用 檔案壓縮了。 ISO 10646 碼中,字的順序與任何的中文碼並不同。無法使用一個 簡單的演算法 (algorithm) 就可以將 Big5 或 GB2312 碼轉換為 ISO 10646。您得用一個轉換表來進行轉碼。但另一方面,ISO 10646 碼的中文字序有利於排序 (sorting)。而且也去除了重複字,因而 對於檢索 (searching) 也有協助。(據說 GBK 字集包含
ISO 10646 碼中所有的字,而且保留與 GB2312 碼相同的字序。在某些情形下 可能是個好字集。)

UTF-8 是 UNICODE 的一種變長字元編碼,即 RFC 3629。簡單的說——大字元集。可以解決多種語言文本顯示問題,從而實現應用國際化和本地化。對系統來講,UTF-8 編碼可以通過屏蔽位和移位操作快速讀寫,排序更加容易。UTF-8 是位元組順序無關的,它的位元組順序在所有系統中都是一樣的。 UTF-8是UTF-8編碼是一種目前廣泛應用於網頁的編碼,它其實是一種Unicode編碼,即致力於把全球所有語言納入一個統一的編碼。前UTF-8已經把幾種重要的亞洲語言納入,包括簡繁中文和日韓文字。因此 UTF-8
具有更高的效能。 不過如果是純英文的話,用什麼都可以,用GB2312也沒問題。

GB2312是簡體中文編碼,當文章/網頁中包含繁體中文、日文、韓文時,這些內容可能無法被正確編碼。對於GB2312 漢字是雙位元組的。所謂雙位元組是指一個雙字要佔用兩個BYTE的位置(即16位),分別稱為高位和低位。 中國規定的漢字編碼為GB2312,這是強制性的,目前幾乎所有的能處理中文的應用程式都支援GB2312。GB2312包括了一二級漢字和9區符號,高位從0xa1到0xfe,低位也是從0xa1到0xfe,其中,漢字的編碼範圍為0xb0a1到0xf7fe。

 

總結:

Unicode 制定組織 (Unicode Consortium) 是許多的公司聯合決定製定一個包含全世界所有文字 的巨大字集,其中也有亞洲的公司參與。例如:Fujitsu and Fuji Xerox 公司。 該組織取用 ISO 10646 字集然後加入其他的資訊:標準名稱及 特性。 Unicode 包含 GB2312 中所有的字及(可能) Big5 碼中所有的字。 而且加入了許多其他語言的文字。(ISO 10646 有幾種編碼方式: UTF-8 是 8-bit 的,而 UTF-16 是 16-bit。
Unicode 是 UTF-16 的形式。
因此 Unicode 比 Big5 及 GB2312 碼好 - 因為 Unicode 包含較多的字。

ISO字元集

ASCII中的"A"代表美國,因此ASCII碼專門用於書寫英語,嚴格來說是美式英語也就不足為奇了。ASCII碼中缺少£、ü、?和許多書寫其他語言和地區所需的字元。

可通過指定128以後的更多字元擴充ASCII碼。國際標準組織(ISO)定義了幾個不同的字元集,它們是在ASCII碼基礎上增加了其他語言和 地區需要的字元。其中最突出的是ISO8859-1,通常叫做Latin-1。Latin-1包括了書寫所有西方歐洲語言不可缺少的附加字元,其中 0~127的字元與ASCII碼相同。表7-2給出了128~255之間的字元,同樣前32個字元是極少使用的非列印控制字元。

所以對於ISO8859-1和GB2312之間的轉換就會出現麻煩了

呵呵 因為通常異種語言之間的轉換是通過Unicode來完成的。假設有兩種不同的語言A和B,轉換的步驟為:先把A轉化為Unicode,再把Unicode轉化為B。

打個比方吧 有GB2312中有一個漢字“李”,其編碼為“C0EE”,欲轉化為ISO8859-1編碼。步驟為:先把“李”字轉化為Unicode,得到 “674E”,再把“674E”轉化為ISO8859-1字元。當然,這個映射不會成功,因為ISO8859-1中根本就沒有與“674E”對應的字元。

總的來說 一個是中國的 一個是西歐語言
------------------------------------------------------------------------------
iso-8859-1是JAVA網路傳輸使用的標準 字元集,而gb2312是標準中文字元集,當你作出提交表單等需要網路傳輸的操作的時候,就需要把 iso-8859-1轉換為gb2312字元集顯示,否則如果按瀏覽器的gb2312格式來解釋iso-8859-1字元集的話,由於2者不相容,所以會 是亂碼.
------------------------------------------------------------------------------
漢字是雙位元組的。所謂雙位元組是指一個雙字要佔用兩個 BYTE的位置(即16位),分別稱為高位和低位。中國規定的漢字編碼為GB2312,這是強制性的, 目前幾乎所有的能處理中文的應用程式都支援GB2312。GB2312包括了一二級漢字和9區符號,高位從0xa1到0xfe,低位也是從0xa1到 0xfe,其中,漢字的編碼範圍為0xb0a1到0xf7fe。

另外有一種編碼,叫做GBK,但這是一份規範,不是強制的。GBK提供了20902個漢字,它相容GB2312,編碼範圍為0x8140到0xfefe。GBK中的所有字元都可以一一映射到Unicode 2.0。

在不久的將來,中國會頒布另一種標準:GB18030-2000(GBK2K)。它收錄了藏、蒙等少數民族的字型,從根本上解決了字位不足的問題。注意: 它不再是定長的。其二位元組部份與GBK相容,四位元組部分是擴充的字元、字形。它的首位元組和第三位元組從0x81到0xfe,二位元組和第四位元組從0x30到 0x39

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.