[Encoding] 字元編碼指南 (ASCII / Unicode UTF-8)

ASCII | UTF-8 | UTF-16 | UTF-32 | Big5 |

Intro


ASCII (ISO/IEC 646)

Item Content
MIME / IANA us-ascii
字節長度 (Byte length) 1 byte
定義字元 (Characters) 128個 (7bits)
Hex: 00-8F
控制字元 (Control code) 0-37, 127

Unicode (ISO 10646)

在表示一個 Unicode 字元時,通常會用「U+」然後接續一組十六進位的數字來表示這一個字元。在基本多文種平面 (BMP) 裏的所有字元,要用四個數字 (即2位元組,共16位元,例如U+4AE0,共支援六萬多個字元),其他 Plane 如 Supplementary Multilingual Plane,或簡稱Plane 1) 則使用到六個數字 (即3位元組,例如U+21619)。

Unicode 的實現方式不同於字元編碼方式。同一個 Unicode 字元可以由不同 Unicode 轉換格式 (Unicode Transformation Format,簡稱為UTF) 實現編碼。

UTF-8, UTF-16, UTF-32 & BOM - unicode.org

UTF-8

適用場景:普遍預設首選,在英數(1 byte)為主+多國語系混雜的應用下達到 Unicode 家族最佳長度

Item Content
擴展來源 (Extends) ACSII
字節長度 (Byte length) 1~4 bytes (RFC 3629)
BOM (非必要) EF BB BF
Byte length Characters Byte 1 Byte 2 Byte 3 Byte 4 Content
1 byte 128個 0xxxxxxx ASCII
2 bytes 1920個 110xxxxx 10xxxxxx 附加符號的字母
3 bytes 61440個 1110xxxx 10xxxxxx 10xxxxxx BMP字元(如中文)
4 bytes 1048576個 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 極少使用的輔助平面的字元(如emoji)

UTF-16

適用場景:多國語系為主的應用下達到 Unicode 家族最佳長度

Item Content
ACSII編碼 不相容
字節長度 (Byte length) 2 or 4 bytes
BOM (BE大端序) FE FF
BOM (LE小端序) FF FE
Byte length Characters Byte 1 Byte 2 Byte 3 Byte 4 Content
2 bytes 65536
(63488個)
xxxxxxxx xxxxxxxx BMP字元(如中文)
4 bytes 1048576
(524288個)
110110xx
110111xx
xxxxxxxx 110111xx
110110xx
xxxxxxxx 極少使用的輔助平面的字元(如emoji)

UTF-32 (不常用)

適用場景:同時支援多國語系且規格以 byte 長度為主的資料交換應用

Item Content
ACSII編碼 不相容
字節長度 (Byte length) 4 bytes
BOM (BE大端序) 00 00 FE FF
BOM (LE小端序) FF FE 00 00

Big5 (繁體中文)

逐漸被淘汰的歷史標準,沒特殊原因選 UTF-8 即可

Item Content
擴展來源 (Extends) ACSII
擴展應用 (Extensions) Big5-HKSCS
字節長度 (Byte length) 1~2 bytes
定義字元 (Characters) 13060 個漢字

其中兼容 ACSII 占 1 byte (0x40~0x7E), 字元集占 2 bytes

Leave a Reply

Your email address will not be published. Required fields are marked *