close

以下文章轉貼至:http://isochen.pixnet.net/blog/post/25668746

以前電腦剛開始發展時,每一個國家都各自發展自己的文字系統,所以就會有中文系統日文系等,可是大家在發展的過程中並沒有相互參考文字在電腦裡的編碼方式,所以同一個碼在不同的地區文字系統裡並不代表同一個字,例如台灣使用big5碼大陸使用gb碼,所以台灣的big5編碼文件拿到大陸用gb編碼系統打開,就是一片亂碼,這個問題在有網際網路以後情況就變得更嚴重,所這時就有一個單位www.unicode.org,就提出一個構想,就是何不把全世界的文字作一個統一的編碼,讓全世界的電腦都可以用,如果這樣的話,就不會再發生中文的文件拿去日本的電腦打開是亂碼的情況,這就是unicode了,現在unicode編到第8代,就utf-8

 

 

 

================

為了讓軟體產品支援多種語系,就必須讓軟體認得各種語言的不同編碼表, 但卻為軟體開發帶來更多的複雜性與不便。Unicode 是一套能夠解決這個問題的世界性編碼標準,它為每一個字元提供與作業平台、程式、語言相獨立的單一編碼。簡言之,Unicode 詳列了世界上所有使用到的字元,並且為它們各自編派一個獨立單一的號碼。Unicode 出現之前,有多達好幾百種不同的編碼系統,試圖分派這些編號,但沒有單獨一種編碼包含足夠的字元。舉例而言,歐盟就得需要數種不同編碼,以便廣納其所有語 言。對於單一語言,如英文,也沒有單一種編碼可以充份表達其所有文字、標點,以及共通的專門符號。更糟的是,這些編碼系統彼此衝突,兩套編碼系統會在兩個 完全不同的字元上,使用相同的編號,或反之亦然。對於有必要支援多種不同編碼的電腦系統,不同編碼或平台上的資料交換,都將面臨資料失真的風險。
Unicode 已受到產業的廣泛接受,如 Apple、HP、IBM、JustSystem、Microsoft、Oracle、SAP、Sun、Sybase、Unisys 等多家領導廠商都表明支援。Unicode 更受到 XML、Java、ECMAScript (JavaScript )、LDAP、CORBA 3.0、WML 等標準的採納。支援 Unicode 的作業系統與瀏覽器等產品也為數不少。Unicode 標準的興起,加上支援工具的推波助瀾,成為全球化軟體技術趨勢中相當顯著的光芒之一。

Unicode 的最初目標是希望採用 16 位元編碼指定超過 65,000 個字元,然而要讓現存所有軟體適應 16 位元資料,必須花費可觀的重新開發成本。Unicode 於是發展出三種不同的編碼形式 UTF-8、UTF-16 和 UTF-32,這三種格式針對同樣的共同字元加以編碼,允許相同的資料以位元組、字組或雙字組形式傳送,並且可在無資料損失下轉換成其它格式。

UTF-8 最常見於 HTML 與相關協定中。此一格式有趣的地方是原先存在於 ASCII 的字元和 UTF-8 中的同一字元, 擁有同樣的的字元值。例如,A 在 ASCII 和 UTF-8 中都是 0x41。大多數現有軟體不需重新撰寫,便可使用轉換成 UTF-8 的 Unicode 字元。UTF -16 使用在需要同時考量字元存取效率和儲存空間的環境。對於一些無須考慮記憶體空間,但要求字元存取必須是固定長度且佔用單一編碼單位(single code unit)的環境,UTF-32 則是最佳的選擇。

=================================

1. UTF-8 只是編碼演算法,他用來對 UNICODE 編碼規則的字及進行編碼。
2. UNICODE 的 code point 有 256*256*256*256 個字,涵蓋全世界幾乎所有國家的語言文字,中文的部分是其中 CJK 的子區段。
3. BIG-5 是台灣地區自己的標準,他是一個簡單編碼演算法,也是一個編碼規則。
4. BIG-5 使用兩個 byte 的固定長度編碼UTF-8 使用 1 到 4 個 byte 的浮動長度編碼 ( 例如字母 C ,在 UTF-8 只會用一個 byte ,中文字大部分會有3 個 byte , 也會有2或者4個byte的機會。 Big5 對英文字母沒有編進去 )
5. 使用 UTF-8 編碼,軟體處理文字會很方便,因為不用同時判斷到底字串哪一部分是ISO8859-1 的編碼,哪些是 Big5 ,這樣會讓軟體處理字串變的非常慢,而UTF-8 的設計,把同一個 code point 的編碼 byte stream 透過前幾個 bit的規則換算,可以讓軟體馬上知道到底這個 byte 是屬於一個 code point 編碼的第幾個 byte ,而可以很快的處理字串的單字切割,同時也讓字串的處理變的更快更有效率。 換句話說,使用 UTF-8 (應該說 UNICODE)軟體就不用在處理字串的時候去不斷的判斷,這個字是不是 Big5 或者其他編碼,這個字與其他字該怎麼切割,因為所有字都在 UNICODE 。
6. 因為顧及資料儲存體的使用要節省,同時也因為可以跟現有的電腦系統已 Byte 作為字串處理的基本單位做法相容,所以 UTF-8 目前最好的使用方法。 但是根據 ISO10646 的制定概念,如果儲存體不是考量重點的話,而且作業系統可以支援,使用UTF-16 甚至 UTF-32 是效率更好的選擇。

政府不出面 整合,那是因為我們沒有能力引導, UNICODE 是國際標準,他要作到的是全世界的共同整合,而我們的 Big5 只為我們自己設計。 字碼不會混亂下去的,因為UNICODE 已經是趨勢, Windows XP 已經採用 UNICODE 作為系統的處理模式,你看到的 Big5 只是顯示的時候幫你轉的, XP 的核心根本就是使用 UNICODE 了。 現在的混亂只是因為舊的系統幾乎採用 Big5 ,為了向前相容,所以得混在一起用。 將來一定會慢慢走向 Unicode 的。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 sunspirit 的頭像
    sunspirit

    Step by Step

    sunspirit 發表在 痞客邦 留言(0) 人氣()