Man page - utf-8(7)

Packages contains this manual

Available languages:

en fr pt_BR es it pl cs ja ru ro zh_TW zh_CN de

Manual

UTF-8

NAME
描 述
屬 性
編 碼 方 式
舉 例 說 明
遵 循 標 準
作 者
參 考
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :


NAME

UTF-8 - ASCII 相 容 的 多 位 元 組 Unicode 編 碼

描 述

The Unicode 字 元 集 使 用 的 是 16 位 ( 雙 位 元 組 ) 碼 。 最 普 遍 的 Unicode 編 碼 方 法 ( UCS-2 ) 由 一 個 16 位 雙 字 序 列 組 成 。 這 樣 的 字 串 中 包 括 了 的 一 些 如 ‘\0’或 ‘/’這 樣 的 在 檔 名 中 或 者 是 在 C 庫 函 式 中 具 有 特 殊 意 義 的 字 元 。 另 外 , 如 果 沒 有 做 重 大 的 修 正 的 話 , 大 部 分 操 作 ASCII 碼 檔 案 的 UNIX 工 具 不 能 夠 正 確 識 別 16 位 的 字 元 。 因 此 , UCS-2 對 於 Unicode 的 檔 名 、 文 字 檔 案 、 環 境 變 數 等 等 來 說 並 不 是 一 種 合 適 的 外 部 編 碼 方 式 。 ISO 10646 Universal Character Set (UCS) , 是 Unicode 的 超 集 , 甚 至 使 用 了 31 位 編 碼 方 式 , 另 外 還 有 使 用 32 編 碼 的 UCS-4 也 有 同 樣 上 述 的 問 題 。 UCS-4 而 用 UTF-8 Unicode UCS 編 碼 就 不 會 存 在 這 樣 的 問 題 。 所 以 , UTF-8 很 明 顯 的 是 在 UNIX 類 作 業 系 統 下 的 Unicode 字 元 集 的 解 決 方 案 。

屬 性

UTF-8 編 碼 具 有 以 下 優 良 屬 性 :

*

UCS 字 元 從 0x00000000 到 0x0000007f ( 傳 統 的 US-ASCII 字 元 ) 簡 單 地 編 碼 為 位 元 組 0x00 到 0x7f ( 與 ASCII 碼 相 容 ) 。 這 意 味 著 只 包 含 7 位 ASCII 字 元 的 檔 案 和 字 串 在 ASCII UTF-8 . 編 碼 方 式 下 是 完 全 一 樣 的 。

*

所 有 大 於 0x7f 的 UCS 字 元 被 編 碼 成 為 多 位 元 組 序 列 。 該 序 列 全 部 是 由 0x80 到 0fd 的 字 元 組 成 , 這 樣 就 不 會 有 標 準 ASCII 字 元 會 被 作 為 某 個 字 的 一 個 部 分 這 種 現 象 出 現 , 對 於 ‘\0’和 ‘\[u2019]這 樣 的 特 殊 字 元 來 說 也 就 不 會 有 問 題 了 。

*

保 留 了 UCS-4 字 典 中 的 位 元 組 串 的 排 列 順 序 。

*

所 有 2ˆ32 次 方 的 UCS 碼 都 能 夠 使 用 UTF-8 來 進 行 編 碼 。

*

0xfe 和 0xff 兩 個 字 元 在 UTF-8 中 不 會 被 用 到 。

*

表 示 非 ASCII 碼 的 UCS 多 位 元 組 串 的 開 始 字 元 總 是 0xc0 到 0xfd 之 間 的 字 元 , 並 會 指 出 該 串 的 長 度 。 多 位 元 組 串 的 其 他 字 元 都 是 0x80 到 0xbf 之 間 的 字 元 。 這 使 得 再 同 步 非 常 簡 單 , 並 令 編 碼 是 無 態 的 , 丟 位 元 組 現 象 也 不 容 易 發 生 。

*

UTF-8 編 碼 的 UCS 字 元 可 以 增 加 到 6 個 位 元 組 的 長 度 。 而 Unicode 只 能 增 加 到 3 個 位 元 組 長 。 由 於 Linux 只 使 用 16 位 的 Unicode UCS 的 子 集 。 所 以 在 Linux 下 , UTF-8 多 位 元 組 串 長 度 最 多 不 會 超 過 三 個 位 元 組 。

編 碼 方 式

下 面 的 位 元 組 串 用 來 表 示 一 個 字 元 。 用 什 麼 串 依 照 該 字 元 在 UCS 編 碼 中 的 序 號 來 定 :
0x00000000 - 0x0000007F:

0xxxxxxx

0x00000080 - 0x000007FF:

110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:

1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

0x00200000 - 0x03FFFFFF:

111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

0x04000000 - 0x7FFFFFFF:

1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

這 裡 xxx 的 位 置 二 進 位 制 位 形 式 的 字 元 編 碼 填 入 。 只 用 最 短 的 那 個 足 夠 表 達 一 個 字 元 編 碼 數 的 多 位 元 組 串 。

舉 例 說 明

Unicode 字 元 0xa9 = 1010 1001 (版 權 所 有 的 符 號 ) 在 UTF-8 中 被 編 碼 為 :

11000010 10101001 = 0xc2 0xa9

字 元 0x2260 = 0010 0010 0110 0000 (“不 等 於 ”符 號 )被 編 碼 為 :

11100010 10001001 10100000 = 0xe2 0x89 0xa0

遵 循 標 準

ISO 10646, Unicode 1.1, XPG4, Plan 9.

作 者

Markus Kuhn

參 考

unicode (7)

[中 文 版 維 護 人 ]

billpan <billpan@yeah.net>

[中 文 版 最 新 更 新 ]

2000/11/09

《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh