2014年10月25日 星期六

ASCII、ANSI、Big5、GB、GBK、Unicode、UTF-X


  • ASCII:只定義128個字(包含控制碼),理論上只需要7bits
  • ANSI:定義了更多字,包括ascii定義的字共256個字,一個字使用8bits
  • Big5:,一個字使用16bits分為兩個byte,然而電腦不知道這2byte要連在一起看,如果Second byte內容跟'\'一樣,會造成許多的errors(google"許蓋功")
  • GB2312、GBK、GB18030:GB2312同Big5使用兩個byte;GBK收入更多字,使用2byte,向下相容GB;GB18030使用浮動編碼,相容GB基本兼容GBK,收入更多字
  • Unicode:收錄標準
  • UTF-8:實作Unicode,屬於浮動編碼,不同的字可能用1~6bytes,英文字1byte、拉丁文等字2bytes,漢字3bytes
  • UTF-16:實作Unicode,最常見的字放在/U+0000~/U+FFFF這些位置
  • UTF-16的UCS-2:Windows的notepad中的Unicode指的是這個UCS-2,固定編碼,都用2bytes,在UTF-16超過2bytes範圍的部分不一定支援
  • UTF-32、UCS-4:使用32個bits==4bytes,包含所有Unicode的字,但也浪費了許多空間
  • 應用
    • 把Big5轉成UTF-8會變接近1.5倍的大小,因為UTF-8中漢字佔3bytes,而Big5只佔2bytes,但UTF-8不會發生慘絕人寰的悲劇(許蓋功)
    • UTF-16通常也會和UTF-8差一點五倍的大小
    • UTF-8的第一個byte跟ascii定義的一樣,使得大多英文程式不大需要修改
參考資料:

Unicode, UTF-8, UTF-16, UCS-2 和一些程式語言的支援方式
<http://fcamel-life.blogspot.tw/2010/04/unicode-utf-8-utf-16-ucs-2.html>

Encoding Gossip: Unicode 與 UTF
<http://openhome.cc/Gossip/Encoding/UnicodeUTF.html>

字符編碼筆記:ASCII,Unicode和UTF-8
<http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html>

沒有留言:

張貼留言