Content-Type:Unicode與字元集必備知識

在約耳趣談軟體一書中,作者約耳提到:

如果你在 2003 年還是程式設計人員的身份,而你卻不知道字元、字元集、字元編碼,以及 Unicode 的基本知識,我就要去抓你,我會把你關在潛水艇裡六個月一直剝洋蔥。我發誓一定會的!

可見這部分概念有多麼重要

首先要先強調一件事

電腦上沒有什麼純文字!

任何看得到的字元都是經過編碼轉換過來的

在 1970 年代尾巴,大家都開始使用 ASCII 編碼系統,採用 8 位元來表示一個字元,包括一些不可列印字元、數字、常用符號、1 ~ 9、a ~ z、A ~ ZASCII 只定義了 1 ~ 127 字元碼的使用,2 8 次方是 256,於是多出來的 128 ~255 的空間就被各不同國家的人拿來各用各的,顯示自己國家語言的符號、文字跟字母,同個字元碼用不同字碼頁都會轉換成不同的字元,這個空間就被稱為 OEM 亂用區。不過英文字母的區段大致上保持一致。

比起歐洲的語系,亞洲的語系字太多 8 位元不夠存,於是出現了 8 位元跟 16 位元混雜的複雜狀況,還好後來出現了試圖包括世界上所有可書寫字元的 Unicode

Unicode 的規範把所有字母都分配一個數字,例如:U+0645(U 是 Unicode 的意思)
但因為美國人很少用到其他國家的字元卻會有一堆 0,例如:U+0064
所以就又有人發明出了現在很常用的 UTF-8:
把 0 ~ 127 的部分存成一個位元組 0064 變成 64

Unicode 還有很多不同的分支,例如:UTF-7 、UCS-4 等等,百家爭鳴

傳統的編碼 Windows 9x 、ISO-8859-1 等等遇到沒對應到的碼都會出現一堆問號,所以漸漸地都使用 Unicode

以往看到網頁或是郵件出現亂碼 ? 框框 的往往就是沒有宣告編碼,宣告編碼以後解讀就會正常了:

郵件:

Content-Type: text/plain; charset="UTF-8"

網頁 HTML5:

<meta charset="utf-8"> 

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s