UTF-8 (8-bit Unicode Transformation Format )是 ぜ 一 いち 種 しゅ 針 はり 對 たい Unicode 的 てき 可變長 かへんちょう 度 ど 字 じ 元 もと 編 へん 碼 ,也是一 いち 種 しゅ 字 じ 首 くび 碼 。它可以用一至四個位元組對Unicode字 じ 元 もと 集中 しゅうちゅう 的 てき 所有 しょゆう 有效 ゆうこう 編 へん 碼點進行 しんこう 編 へん 碼,屬 ぞく 於Unicode 標準 ひょうじゅん 的 てき 一 いち 部分 ぶぶん ,最初 さいしょ 由 ゆかり 肯·湯 ゆ 普 あまね 遜 へりくだ 和 わ 羅 ら 布 ぬの ·派 は 克 かつ 提出 ていしゅつ 。[ 2] [ 3] 由 よし 於較小 しょう 值的編 へん 碼點一般使用頻率較高,直接 ちょくせつ 使用 しよう Unicode編 へん 碼效率 りつ 低下 ていか ,大量 たいりょう 浪費 ろうひ 主 ぬし 記憶 きおく 體 たい 空間 くうかん 。UTF-8就是為 ため 了 りょう 解決 かいけつ 向 こう 下相 おりあい 容 よう ASCII碼而設計 せっけい ,Unicode中前 ちゅうぜん 128個 こ 字 じ 元 もと ,使用 しよう 與 あずか ASCII碼相同 どう 的 てき 二進制值的單個位 い 元 もと 組 ぐみ 進行 しんこう 編 へん 碼,而且字面 じめん 與 あずか ASCII碼的字面 じめん 一 いち 一 いち 對應 たいおう ,這使得 とく 原 ばら 來 らい 處理 しょり ASCII字 じ 元 もと 的 てき 軟件 無 む 須或只 ただ 須做少 しょう 部 ぶ 份修改 あらため ,即 そく 可 か 繼續 けいぞく 使用 しよう 。因 よし 此,它逐漸 やや 成 なり 為 ため 電子 でんし 郵件 、網 あみ 頁 ぺーじ 及其他 ほか 儲 もうか 存 そん 或 ある 傳送 でんそう 文字 もじ 優先 ゆうせん 採用 さいよう 的 てき 編 へん 碼方式 しき 。
顯示 けんじ 了 りょう 谷 たに 歌 か 所 しょ 記錄 きろく 的 てき 2001年 ねん 至 いたり 2012年 ねん 主要 しゅよう 編 へん 碼方法的 ほうてき 使用 しよう 情況 じょうきょう ,[ 1] 2008年 ねん ,UTF-8的 てき 使用 しよう 率 りつ 超過 ちょうか 所有 しょゆう 其他編 へん 碼方式 しき ,在 ざい 2012年 ねん 超過 ちょうか 所有 しょゆう 網 もう 頁 ぺーじ 的 てき 60%。其中ASCII only 曲線 きょくせん 包括 ほうかつ 所有 しょゆう 僅包含 ほうがん ASCII字 じ 元 もと 的 てき 網 もう 頁 ぺーじ ,無論 むろん 元 もと 數 すう 據 よりどころ 中 ちゅう 聲明 せいめい 如何 いか 。
自 じ 2009年 ねん 以來 いらい ,UTF-8一 いち 直 ちょく 是 ぜ 萬 まん 維網的 てき 最 さい 主要 しゅよう 的 てき 編 へん 碼形式 しき (對 たい 所有 しょゆう ,而不僅是Unicode範圍 はんい 內的編 へん 碼)(並 なみ 由 よし WHATWG宣 せん 佈為強制 きょうせい 性 せい 的 てき 「適用 てきよう 於所有 しょゆう 事物 じぶつ (for all things )」,[ 4] 截止到 いた 2019年 ねん 11月, 在 ざい 所有 しょゆう 網 もう 頁 ぺーじ 中 ちゅう ,UTF-8編 へん 碼應用 おうよう 率 りつ 高 だか 達 たち 94.3%(其中一 いち 些僅是 ぜ ASCII編 へん 碼,因 いん 為 ため 它是UTF-8的 てき 子 こ 集 しゅう ),而在排 はい 名 めい 最高 さいこう 的 てき 1000個 こ 網 もう 頁 ぺーじ 中 ちゅう 佔96%。[ 5] 第 だい 二熱門的多位元組編碼方式Shift JIS和 わ GB 2312分別 ふんべつ 具有 ぐゆう 0.3%和 わ 0.2%的 てき 佔有率 りつ 。[ 6] [ 7] [ 1] Internet郵件聯盟 れんめい ( Internet Mail Consortium, IMC )建議 けんぎ 所有 しょゆう 電子 でんし 郵件程 ほど 式 しき 都 と 能 のう 夠使用 しよう UTF-8展示 てんじ 和 わ 建立 こんりゅう 郵件,[ 8] W3C建議 けんぎ UTF-8作為 さくい XML檔案和 わ HTML檔案的 てき 預 あずか 設 しつらえ 編 へん 碼方式 しき 。[ 9] 互聯網 もう 工程 こうてい 工作 こうさく 小 しょう 組 ぐみ (IETF)要求 ようきゅう 所有 しょゆう 互聯網 もう 協定 きょうてい 都 と 必須 ひっす 支援 しえん UTF-8編 へん 碼[ 10] 。互聯網 もう 郵件聯盟 れんめい (IMC)建議 けんぎ 所有 しょゆう 電子 でんし 郵件軟件都 と 支援 しえん UTF-8編 へん 碼。[ 11]
1992年初 ねんしょ ,為 ため 建立 こんりゅう 良好 りょうこう 的 てき 位 い 元 もと 組 ぐみ 串 くし 編 へん 碼系統 けいとう 以供多 おお 位 い 元 もと 組 ぐみ 字 じ 元 もと 集 しゅう 使用 しよう ,開始 かいし 了 りょう 一 いち 個 こ 正式 せいしき 的 てき 研究 けんきゅう 。ISO/IEC 10646 的 てき 初稿 しょこう 中有 ちゅうう 一 いち 個 こ 非 ひ 必須 ひっす 的 てき 附錄 ふろく ,名 めい 為 ため UTF。當 とう 中 ちゅう 包含 ほうがん 了 りょう 一 いち 個 こ 供 きょう 32位 い 元 もと 的 てき 字 じ 元 もと 使用 しよう 的 てき 位 い 元 もと 組 くみ 串 くし 編 へん 碼系統 けいとう 。這個編 へん 碼方式 しき 的 てき 效能 こうのう 並 なみ 不 ふ 令 れい 人 じん 滿 まん 意 い ,但 ただし 它提出 ていしゅつ 了 りょう 將 しょう 0-127的 てき 範圍 はんい 保留 ほりゅう 給 きゅう ASCII以相容 よう 舊 きゅう 系統 けいとう 的 てき 概念 がいねん 。
1992年 ねん 7月 がつ ,X/Open 委員 いいん 會 かい XoJIG開始 かいし 尋 ひろ 求 もとめ 一個較佳的編碼系統。Unix系統 けいとう 實驗 じっけん 室 しつ (USL)的 てき Dave Prosser為 ため 此提出 ていしゅつ 了 りょう 一 いち 個 こ 編 へん 碼系統 けいとう 的 てき 建議 けんぎ 。它具備 ぐび 可 か 更 さら 快速 かいそく 實 み 作 さく 的 てき 特性 とくせい ,並 なみ 引入一項新的改進。其中,7位 い 元 もと 的 てき ASCII 符號 ふごう 只 ただ 代表 だいひょう 原 ばら 來 らい 的 てき 意思 いし ,所有 しょゆう 多 た 位 い 元 もと 組 ぐみ 序列 じょれつ 則 そく 會 かい 包含 ほうがん 第 だい 8位 い 元 もと 的 てき 符號 ふごう ,也就是 ぜ 所謂 いわゆる 的 てき 最高 さいこう 有效 ゆうこう 位 い 元 もと 。
1992年 ねん 8月 がつ ,這個建議 けんぎ 由 よし IBM X/Open 的 てき 代表 だいひょう 流傳 りゅうでん 到 いた 一 いち 些感興趣 きょうしゅ 的 てき 團體 だんたい 。與 あずか 此同時 じ ,貝 かい 爾 なんじ 實驗 じっけん 室 しつ 九 きゅう 號 ごう 計 けい 劃作業 さぎょう 系統 けいとう 工作 こうさく 小 しょう 組 ぐみ 的 てき 肯·湯 ゆ 普 あまね 遜 へりくだ 對 たい 這編碼系統 けいとう 作出 さくしゅつ 重大 じゅうだい 的 てき 修 おさむ 改 あらため ,讓 ゆずる 編 へん 碼可以自我 わが 同 どう 步 ふ ,使 つかい 得 とく 不 ふ 必從字 じ 串 くし 的 てき 開 ひらき 首 くび 讀取 よみと ,也能找出字 じ 元 もと 間 あいだ 的 てき 分界 ぶんかい 。1992年 ねん 9月 がつ 2日 にち ,肯·湯 ゆ 普 あまね 遜 へりくだ 和 わ 羅 ら 勃·派 は 克 かつ 一起 かずき 在 ざい 美國 びくに 新澤 にいざわ 西 にし 州 しゅう 一架餐車的餐桌墊上描繪出此設計的要點。接 せっ 下 か 來 らい 的 てき 日子 にっし ,Pike及湯普 あまね 遜 へりくだ 將 はた 它實現 じつげん ,並 なみ 將 はた 這編碼系統 けいとう 完全 かんぜん 應用 おうよう 在 ざい 九 きゅう 號 ごう 計 けい 劃當 とう 中 なか ,及後他 た 將 しょう 有 ゆう 關 せき 成果 せいか 反 はん 饋X/Open。
1993年 ねん 1月 がつ 25-29日 にち 的 てき 在 ざい 聖地 せいち 牙 きば 哥 舉行的 てき USENIX 會議 かいぎ 首 くび 次 じ 正式 せいしき 介 かい 紹UTF-8。
自 じ 1996年 ねん 起 おこり ,微 ほろ 軟的 てき CAB (MS Cabinet)規格 きかく 在 ざい UTF-8標準 ひょうじゅん 正式 せいしき 落實前 ぜん 就明確 かく 容 よう 許 もと 在任 ざいにん 何 なん 地方 ちほう 使用 しよう UTF-8編 へん 碼系統 けいとう 。但 ただし 有 ゆう 關 せき 的 てき 編 へん 碼器實際 じっさい 上 じょう 從來 じゅうらい 沒 ぼつ 有 ゆう 實 み 作 さく 這方面 ほうめん 的 てき 規格 きかく 。
UTF-8使用 しよう 一 いち 至 いたり 六 ろく 個 こ 位 い 元 もと 組 ぐみ 為 ため 每 ごと 個 こ 字 じ 元 もと 編 へん 碼(儘管如此,2003年 ねん 11月 がつ UTF-8被 ひ RFC 3629重 じゅう 新規 しんき 範 はん ,只 ただ 能 のう 使用 しよう 原 ばら 來 らい Unicode定義 ていぎ 的 てき 區域 くいき ,U+0000到 いた U+10FFFF,也就是 ぜ 說 せつ 最多 さいた 四 よん 個 こ 位 い 元 もと 組 くみ ):
128個 こ US-ASCII字 じ 元 もと 只 ただ 需一個位元組編碼(Unicode範圍 はんい 由 よし U+0000至 いたり U+007F)。
帶 おび 有 ゆう 附加 ふか 符號 ふごう 的 てき 拉 ひしげ 丁 ちょう 文 あや 、希 まれ 臘文 、西里 にしざと 爾 なんじ 字母 じぼ 、亞美 あみ 尼 あま 亞 あ 語 ご 、希 まれ 伯 はく 來 らい 文 ぶん 、阿 おもね 拉 ひしげ 伯 はく 文 ぶん 、敘利亞 あ 文 ぶん 及它拿字母 じぼ 則 のり 需要 じゅよう 兩個 りゃんこ 位 い 元 もと 組 くみ 編 へん 碼(Unicode範圍 はんい 由 よし U+0080至 いたり U+07FF)。
其他基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん (BMP)中 ちゅう 的 てき 字 じ 元 もと (這包含 ほうがん 了 りょう 大 だい 部分 ぶぶん 常用 じょうよう 字 じ ,如大部分 ぶぶん 的 てき 漢字 かんじ )使用 しよう 三個位元組編碼(Unicode範圍 はんい 由 よし U+0800至 いたり U+FFFF)。
其他極少 きょくしょう 使用 しよう 的 てき Unicode 輔助平面 へいめん 的 てき 字 じ 元 もと 使用 しよう 四至六位元組編碼(Unicode範圍 はんい 由 よし U+10000至 いたり U+1FFFFF使用 しよう 四 よん 位 い 元 もと 組 ぐみ ,Unicode範圍 はんい 由 よし U+200000至 いたり U+3FFFFFF使用 しよう 五 ご 位 い 元 もと 組 ぐみ ,Unicode範圍 はんい 由 よし U+4000000至 いたり U+7FFFFFFF使用 しよう 六 ろく 位 い 元 もと 組 ぐみ )。
對 たい 上述 じょうじゅつ 提 ひさげ 及的第 だい 四 よん 種 しゅ 字 じ 元 もと 而言,UTF-8使用 しよう 四至六個位元組來編碼似乎太耗費資源了。但 ただし UTF-8對 たい 所有 しょゆう 常用 じょうよう 的 てき 字 じ 元 もと 都 と 可 か 以用三 さん 個 こ 位 い 元 もと 組 くみ 表示 ひょうじ ,而且它的另一 いち 種 しゅ 選擇 せんたく ,UTF-16編 へん 碼 ,對 たい 前述 ぜんじゅつ 的 てき 第 だい 四種字元同樣需要四個位元組來編碼,所以 ゆえん 要 よう 決定 けってい UTF-8或 ある UTF-16哪種編 へん 碼比較 ひかく 有效 ゆうこう 率 りつ ,還 かえ 要 よう 視 み 所 しょ 使用 しよう 的 てき 字 じ 元 もと 的 てき 分 ぶん 佈範圍 はんい 而定。不 ふ 過 か ,如果使用 しよう 一些傳統的壓縮系統,比 ひ 如DEFLATE ,則 のり 這些不同 ふどう 編 へん 碼系統 けいとう 間 あいだ 的 てき 的 てき 差異 さい 就變得 とく 微 ほろ 不足 ふそく 道 どう 了 りょう 。若 わか 顧及傳統 でんとう 壓縮 あっしゅく 演算 えんざん 法 ほう 在 ざい 壓縮 あっしゅく 較短文字 もじ 上 じょう 的 てき 效果 こうか 不 ふ 大 だい ,可 か 以考慮 こうりょ 使用 しよう Unicode標準 ひょうじゅん 壓縮 あっしゅく 格式 かくしき (SCSU)。
Unicode與 あずか UTF-8的 てき 轉換 てんかん
目前 もくぜん 有 ゆう 好 こう 幾 いく 份關於UTF-8詳細 しょうさい 規格 きかく 的 てき 檔案,但 ただし 這些檔案在 ざい 定義 ていぎ 上 じょう 有 ゆう 些許的 てき 不同 ふどう :
RFC 3629 / STD 63(2003),這份檔案制定 せいてい 了 りょう UTF-8是 ぜ 標準 ひょうじゅん 的 てき 互聯網 もう 協定 きょうてい 元素 げんそ
第 だい 四 よん 版 はん ,The Unicode Standard ,§3.9-§3.10(2003)
ISO/IEC 10646-1:2000附加 ふか 檔案D(2000)
它們取代 だい 了 りょう 以下 いか 那 な 些被淘汰 とうた 的 てき 定義 ていぎ :
ISO/IEC 10646-1:1993修正 しゅうせい 案 あん 2/附加 ふか 檔案R(1996)
第 だい 二 に 版 はん ,The Unicode Standard ,附錄 ふろく A(1996)
RFC 2044 (1996)
RFC 2279 (1998)
第 だい 三 さん 版 はん ,The Unicode Standard ,§2.3(2000)及勘誤 あやま 表 ひょう #1:UTF-8 Shortest Form(2000)
Unicode Standard附加 ふか 檔案#27: Unicode 3.1 (2001)
事實 じじつ 上 じょう ,所有 しょゆう 定義 ていぎ 的 てき 基本 きほん 原理 げんり 都 と 是 ぜ 相 しょう 同 どう 的 てき ,它們之 の 間 あいだ 最 さい 主要 しゅよう 的 てき 不同 ふどう 是 ぜ 支援 しえん 的 てき 字 じ 元 もと 範圍 はんい 及無效 むこう 輸入 ゆにゅう 的 てき 處理 しょり 方法 ほうほう 。
Unicode字 じ 元 もと 的 てき 位 い 元 もと 被 ひ 分割 ぶんかつ 為 ため 數 すう 個 こ 部分 ぶぶん ,並 なみ 分配 ぶんぱい 到 いた UTF-8的 てき 位 い 元 もと 組 ぐみ 串 くし 中 ちゅう 較低的 てき 位 い 元 もと 的 てき 位置 いち 。在 ざい U+0080的 てき 以下 いか 字 じ 元 もと 都 と 使用 しよう 內含其字元 もと 的 てき 單 たん 位 い 元 もと 組 ぐみ 編 へん 碼。這些編 へん 碼正好 こう 對應 たいおう 7位 い 元 もと 的 てき ASCII字 じ 元 もと 。在 ざい 其他情況 じょうきょう ,有 ゆう 可能 かのう 需要 じゅよう 多 た 達 たち 4個 こ 字 じ 元 もと 組 ぐみ 來 らい 表示 ひょうじ 一 いち 個 こ 字 じ 元 もと 。這些多 た 位 い 元 もと 組 ぐみ 的 てき 最高 さいこう 有效 ゆうこう 位 い 元 もと 會 かい 設置 せっち 成 なり 1,以防止 ぼうし 與 あずか 7位 い 元 もと 的 てき ASCII字 じ 元 もと 混淆 こんこう ,並 なみ 保持 ほじ 標準 ひょうじゅん 的 てき 位 い 元 もと 組 くみ 主導 しゅどう 字 じ 串 くし 運 うん 作 さく 順 じゅん 利 り 。
代 だい 碼範圍 はんい 十 じゅう 六 ろく 進 しん 制 せい
標 しるべ 量 りょう 值(scalar value)二 に 進 しん 制 せい
UTF-8二 に 進 しん 制 せい /十 じゅう 六 ろく 進 しん 制 せい
註釋 ちゅうしゃく
000000 - 00007F128個 こ 代 だい 碼
00000000 00000000 0zzzzzzz
0zzzzzzz(00-7F)
ASCII字 じ 元 もと 範圍 はんい ,位 い 元 もと 組 ぐみ 由 よし 零 れい 開始 かいし
七 なな 個 こ z
七 なな 個 こ z
000080 - 0007FF1920個 こ 代 だい 碼
00000000 00000yyy yyzzzzzz
110yyyyy(C0-DF) 10zzzzzz(80-BF)
第 だい 一 いち 個 こ 位 い 元 もと 組 くみ 由 よし 110開始 かいし ,接着 せっちゃく 的 てき 位 い 元 もと 組 くみ 由 よし 10開始 かいし
三 さん 個 こ y;二 に 個 こ y;六 ろく 個 こ z
五 ご 個 こ y;六 ろく 個 こ z
000800 - 00D7FF 00E000 - 00FFFF61440個 こ 代 だい 碼 [Note 1]
00000000 xxxxyyyy yyzzzzzz
1110xxxx(E0-EF) 10yyyyyy 10zzzzzz
第 だい 一 いち 個 こ 位 い 元 もと 組 くみ 由 よし 1110開始 かいし ,接着 せっちゃく 的 てき 位 い 元 もと 組 くみ 由 よし 10開始 かいし
四 よん 個 こ x;四 よん 個 こ y;二 に 個 こ y;六 ろく 個 こ z
四 よん 個 こ x;六 ろく 個 こ y;六 ろく 個 こ z
010000 - 10FFFF1048576個 こ 代 だい 碼
000wwwxx xxxxyyyy yyzzzzzz
11110www(F0-F7) 10xxxxxx 10yyyyyy 10zzzzzz
將 はた 由 よし 11110開始 かいし ,接着 せっちゃく 的 てき 位 い 元 もと 組 くみ 由 よし 10開始 かいし
三 さん 個 こ w;二 に 個 こ x;四 よん 個 こ x;四 よん 個 こ y;二 に 個 こ y;六 ろく 個 こ z
三 さん 個 こ w;六 ろく 個 こ x;六 ろく 個 こ y;六 ろく 個 こ z
Note 1 Unicode在 ざい 範圍 はんい D800-DFFF中 ちゅう 不 ふ 存 そん 在任 ざいにん 何 なん 字 じ 元 もと ,基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん 中 ちゅう 約定 やくじょう 了 りょう 這個範圍 はんい 用 よう 於UTF-16擴展標識 ひょうしき 輔助平面 へいめん (兩個 りゃんこ UTF-16表示 ひょうじ 一 いち 個 こ 輔助平面 へいめん 字 じ 元 もと )。當然 とうぜん ,任 にん 何 なん 編 へん 碼都是 ぜ 可 か 以被轉換 てんかん 到 いた 這個範圍 はんい ,但 ただし 在 ざい unicode中 ちゅう 他 た 們並不 ふ 代表 だいひょう 任 にん 何 なん 合 ごう 法的 ほうてき 值。
例 れい 如,希 まれ 伯 はく 來 らい 語 ご 字母 じぼ aleph(א)的 てき Unicode代 だい 碼是U+05D0,按照以下 いか 方法 ほうほう 改 あらため 成 なり UTF-8:
它屬於U+0080到 いた U+07FF區域 くいき ,這個表 ひょう 說明 せつめい 它使用 しよう 雙 そう 位 い 元 もと 組 くみ ,110 yyyyy 10 zzzzzz.
十 じゅう 六 ろく 進 しん 制 せい 的 てき 0x05D0換算 かんさん 成 なり 二 に 進 しん 制 せい 就是101-1101-0000.
這11位 い 數 すう 按順序 じょ 放 ひ 入 にゅう "y"部分 ぶぶん 和 わ "z"部分 ぶぶん :11010111 10010000 .
最後 さいご 結果 けっか 就是雙 そう 位 い 元 もと 組 くみ ,用 よう 十 じゅう 六進制寫起來就是0xD7 0x90,這就是 ぜ 這個字 じ 元 もと aleph(א)的 てき UTF-8編 へん 碼。
所以 ゆえん 開始 かいし 的 てき 128個 こ 字 じ 元 もと (US-ASCII)只 ただ 需一 いち 位 い 元 もと 組 ぐみ ,接 せっ 下 か 來 らい 的 てき 1920個 こ 字 じ 元 もと 需要 じゅよう 雙 そう 位 い 元 もと 組 くみ 編 へん 碼,包括 ほうかつ 帶 たい 附加 ふか 符號 ふごう 的 てき 拉 ひしげ 丁字 ていじ 母 はは ,希 まれ 臘字母 はは ,西里 にしざと 爾 なんじ 字母 じぼ ,科 か 普 ひろし 特 とく 語 ご 字母 じぼ ,亞美 あみ 尼 あま 亞 あ 語 ご 字母 じぼ ,希 まれ 伯 はく 來 らい 文 ぶん 字母 じぼ 和 わ 阿 おもね 拉 ひしげ 伯 はく 字母 じぼ 的 てき 字 じ 元 もと 。基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん 中 ちゅう 其餘的 てき 字 じ 元 もと 使用 しよう 三 さん 個 こ 位 い 元 もと 組 くみ ,剩餘 じょうよ 字 じ 元 もと 使用 しよう 四 よん 個 こ 位 い 元 もと 組 ぐみ 。
根據 こんきょ 這種方式 ほうしき 可 か 以處理 しょり 更 さら 大 だい 數量 すうりょう 的 てき 字 じ 元 もと 。原 はら 來 らい 的 てき 規範 きはん 允許 いんきょ 長 ちょう 達 たち 6位 い 元 もと 組 ぐみ 的 てき 序列 じょれつ ,可 か 以覆蓋 ぶた 到 いた 31位 い 元 もと (通用 つうよう 字 じ 元 もと 集 しゅう 原 はら 來 らい 的 てき 極限 きょくげん )。儘管如此,2003年 ねん 11月 がつ UTF-8被 ひ RFC 3629重 じゅう 新規 しんき 範 はん ,只 ただ 能 のう 使用 しよう 原 ばら 來 らい Unicode定義 ていぎ 的 てき 區域 くいき ,U+0000到 いた U+10FFFF。根據 こんきょ 這些規範 きはん ,以下 いか 位 くらい 元 もと 組 ぐみ 值將無法 むほう 出現 しゅつげん 在 ざい 合法 ごうほう UTF-8序列 じょれつ 中 ちゅう :
編 へん 碼(二 に 進 しん 制 せい )
編 へん 碼(十 じゅう 六 ろく 進 しん 制 せい )
註釋 ちゅうしゃく
1100000x
C0, C1
過 か 長編 ちょうへん 碼:雙 そう 位 い 元 もと 組 くみ 序列 じょれつ 的 てき 頭 あたま 位 い 元 もと 組 くみ ,但 ただし 碼點 <= 127
1111111x
FE, FF
無法 むほう 達 たち 到 いた :7或 ある 8位 い 元 もと 組 ぐみ 序列 じょれつ 的 てき 頭 あたま 位 い 元 もと 組 くみ
111110xx 1111110x
F8, F9, FA, FB, FC, FD
被 ひ RFC 3629規範 きはん :5或 ある 6位 い 元 もと 組 ぐみ 序列 じょれつ 的 てき 頭 あたま 位 い 元 もと 組 くみ
11110101 1111011x
F5, F6, F7
被 ひ RFC 3629規範 きはん :碼點超過 ちょうか 10FFFF的 てき 頭 あたま 位 い 元 もと 組 くみ
對 たい 於UTF-8編 へん 碼中的 てき 任意 にんい 位 い 元 もと 組 ぐみ B,如果B的 てき 第 だい 一 いち 位 い 為 ため 0,則 のり B獨立 どくりつ 的 てき 表示 ひょうじ 一 いち 個 こ 字 じ 元 もと (ASCII碼);
如果B的 てき 第 だい 一 いち 位 い 為 ため 1,第 だい 二 に 位 い 為 ため 0,則 のり B為 ため 一個多位元組字元中的一個位元組(非 ひ ASCII字 じ 元 もと );
如果B的 てき 前 ぜん 兩 りょう 位 い 為 ため 1,第 だい 三 さん 位 い 為 ため 0,則 のり B為 ため 兩個 りゃんこ 位 い 元 もと 組 くみ 表示 ひょうじ 的 てき 字 じ 元 もと 中 なか 的 てき 第 だい 一 いち 個 こ 位 い 元 もと 組 くみ ;
如果B的 てき 前 まえ 三 さん 位 い 為 ため 1,第 だい 四 よん 位 い 為 ため 0,則 のり B為 ため 三個位元組表示的字元中的第一個位元組;
如果B的 てき 前 まえ 四 よん 位 い 為 ため 1,第 だい 五 ご 位 い 為 ため 0,則 のり B為 ため 四個位元組表示的字元中的第一個位元組;
因 いん 此,對 たい UTF-8編 へん 碼中的 てき 任意 にんい 位 い 元 もと 組 くみ ,根據 こんきょ 第 だい 一 いち 位 い ,可 か 判斷 はんだん 是 ぜ 否 ひ 為 ため ASCII字 じ 元 もと ;根據 こんきょ 前 まえ 二 に 位 い ,可 か 判斷 はんだん 該位元 もと 組 ぐみ 是 ぜ 否 ひ 為 ため 一個字元編碼的第一個位元組;根據 こんきょ 前 まえ 四 よん 位 い (如果前 ぜん 兩 りょう 位 い 均 ひとし 為 ため 1),可 か 確定 かくてい 該位元 もと 組 ぐみ 為 ため 字 じ 元 もと 編 へん 碼的第 だい 一 いち 個 こ 位 い 元 もと 組 くみ ,並 なみ 且可判斷 はんだん 對應 たいおう 的 てき 字 じ 元 もと 由 よし 幾 いく 個 こ 位 い 元 もと 組 くみ 表示 ひょうじ ;根據 こんきょ 前 まえ 五 ご 位 い (如果前 まえ 四 よん 位 い 為 ため 1),可 か 判斷 はんだん 編 へん 碼是否 いや 有 ゆう 錯誤 さくご 或 ある 數 すう 據 よりどころ 傳 でん 輸過程 ほど 中 ちゅう 是 ぜ 否 いや 有 ゆう 錯誤 さくご 。
UTF-8的 てき 設計 せっけい 有 ゆう 以下 いか 的 てき 多 た 字 じ 元 もと 組 ぐみ 序列 じょれつ 的 てき 特質 とくしつ :
單位 たんい 元 もと 組 ぐみ 字 じ 元 もと 的 てき 最高 さいこう 有效 ゆうこう 位 い 元 もと 永遠 えいえん 為 ため 0。
多 た 位 い 元 もと 組 ぐみ 序列 じょれつ 中 ちゅう 的 てき 首 くび 個 こ 字 じ 元 もと 組 ぐみ 的 てき 幾 いく 個 こ 最高 さいこう 有效 ゆうこう 位 い 元 もと 決定 けってい 了 りょう 序列 じょれつ 的 てき 長 ちょう 度 ど 。最高 さいこう 有效 ゆうこう 位 い 為 ため 110
的 てき 是 ぜ 2位 い 元 もと 組 ぐみ 序列 じょれつ ,而1110
的 てき 是 ぜ 三 さん 位 い 元 もと 組 ぐみ 序列 じょれつ ,如此類推 るいすい 。
多 た 位 い 元 もと 組 ぐみ 序列 じょれつ 中 ちゅう 其餘的 てき 位 い 元 もと 組 ぐみ 中 ちゅう 的 てき 首 くび 兩個 りゃんこ 最高 さいこう 有效 ゆうこう 位 い 元 もと 為 ため 10
。
UTF-8的 てき 這些特質 とくしつ ,保證 ほしょう 了 りょう 一 いち 個 こ 字 じ 元 もと 的 てき 位 い 元 もと 組 ぐみ 序列 じょれつ 不 ふ 會 かい 包含 ほうがん 在 ざい 另一 いち 個 こ 字 じ 元 もと 的 てき 位 い 元 もと 組 ぐみ 序列 じょれつ 中 ちゅう 。這確保 かくほ 了 りょう 以位元 もと 組 ぐみ 為 ため 基礎 きそ 的 てき 部 ぶ 份字串 くし 比 ひ 對 たい (sub-string match)方法 ほうほう 可 か 以適用 てきよう 於在文字 もじ 中 ちゅう 搜 さがせ 尋 ひろ 字 じ 或 ある 詞 し 。有 ゆう 些比較舊的 てき 可變長 かへんちょう 度 ど 8位 い 元 もと 編 へん 碼(如Shift JIS )沒 ぼつ 有 ゆう 這個特質 とくしつ ,故 こ 字 じ 串 くし 比 ひ 對 たい 的 てき 演算 えんざん 法 ほう 變 へん 得 どく 相當 そうとう 複雜 ふくざつ 。雖然這增加 ぞうか 了 りょう UTF-8編 へん 碼的字 じ 串 くし 的 てき 資 し 訊冗餘 あまり ,但 ただし 是 ぜ 利 り 多 た 於弊。另外,資料 しりょう 壓縮 あっしゅく 並 なみ 非 ひ Unicode的 てき 目的 もくてき ,所以 ゆえん 不可 ふか 混 こん 為 ため 一 いち 談 だん 。即 そく 使 つかい 在 ざい 傳送 でんそう 過程 かてい 中有 ちゅうう 部 ぶ 份位元 もと 組 ぐみ 因 いん 錯誤 さくご 或 ある 干 ひ 擾而完全 かんぜん 遺失 いしつ ,還 かえ 是 ぜ 有 ゆう 可能 かのう 在 ざい 下 した 一個字元的起點重新同步,令 れい 受損範圍 はんい 受到限 げん 制 せい 。
另一方面 ほうめん ,由 ゆかり 於其位 い 元 もと 組 くみ 序列 じょれつ 設計 せっけい ,如果一個疑似為字串的序列被驗證為UTF-8編 へん 碼,那 な 麼我們可以有把握 はあく 地 ち 說 せつ 它是UTF-8字 じ 串 くし 。一段兩位元組隨機序列碰巧為合法的UTF-8而非ASCII的 てき 概 がい 率 りつ 為 ため 32分 ふん 1。對 たい 於三位元組序列的概率為256分 ふん 1,對 たい 更 さら 長 ちょう 的 てき 序列 じょれつ 的 てき 概 がい 率 りつ 就更低 てい 了 りょう 。
UTF-8是 ぜ UNICODE的 てき 一種變長度的編碼表達方式《一般 いっぱん UNICODE為 ため 雙 そう 位 い 元 もと 組 ぐみ (指 ゆび UCS2)》,它由肯·湯 ゆ 普 あまね 遜 へりくだ (Ken Thompson ) 於1992年 ねん 建立 こんりゅう ,現在 げんざい 已 やめ 經 けい 標準 ひょうじゅん 化 か 為 ため RFC 3629。UTF-8就是以8位 い 元 もと 為 ため 單元 たんげん 對 たい UCS進行 しんこう 編 へん 碼,而UTF-8不 ふ 使用 しよう 大尾 たいび 序 じょ 和 わ 小尾 おび 序 じょ 的 てき 形式 けいしき ,每 まい 個 こ 使用 しよう UTF-8儲 もうか 存 そん 的 てき 字 じ 元 もと ,除 じょ 了 りょう 第 だい 一 いち 個 こ 位 い 元 もと 組 くみ 外 がい ,其餘位 い 元 もと 組 くみ 的 てき 頭 あたま 兩個 りゃんこ 位 い 元 もと 都 と 是 ぜ 以"10"開始 かいし ,使 つかい 文字 もじ 處理 しょり 器 き 能 のう 夠較快 かい 地 ち 找出每 ごと 個 こ 字 じ 元 もと 的 てき 開始 かいし 位置 いち 。
但 ただし 為 ため 了 りょう 與 あずか 以前 いぜん 的 てき ASCII碼相容 よう (ASCII為 ため 一 いち 個 こ 位 い 元 もと 組 くみ ),因 いん 此UTF-8選擇 せんたく 了 りょう 使用 しよう 可變長 かへんちょう 度 ど 位 い 元 もと 組 ぐみ 來 き 儲 もうか 存 そん Unicode:
(注意 ちゅうい :不 ふ 論 ろん 是 ぜ Unicode (Table 3.7) [ 12] ,還 かえ 是 ぜ ISO 10646 (10.2 UTF-8) [ 13] ,目前 もくぜん 都 と 只 ただ 規定 きてい 了 りょう 最高 さいこう 碼位是 ぜ 0x10FFFF的 てき 字 じ 元 もと 的 てき 編 へん 碼。下表 かひょう 中 ちゅう 表示 ひょうじ 大 だい 於0x10FFFF的 てき UTF-8編 へん 碼是不 ふ 符合 ふごう 標準 ひょうじゅん 的 てき 。)
Unicode 和 わ UTF-8 之 これ 間 あいだ 的 てき 轉換 てんかん 關係 かんけい 表 ひょう ( x
字 じ 元 もと 表示 ひょうじ 碼點佔據的 てき 位 い )
碼點的 てき 位 い 數 すう
碼點起 おこり 值
碼點終 おわり 值
位 い 元 もと 組 ぐみ 序列 じょれつ
Byte 1
Byte 2
Byte 3
Byte 4
Byte 5
Byte 6
7
U+0000
U+007F
1
0xxxxxxx
11
U+0080
U+07FF
2
110xxxxx
10xxxxxx
16
U+0800
U+FFFF
3
1110xxxx
10xxxxxx
10xxxxxx
21
U+10000
U+1FFFFF
4
11110xxx
10xxxxxx
10xxxxxx
10xxxxxx
26
U+200000
U+3FFFFFF
5
111110xx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
31
U+4000000
U+7FFFFFFF
6
1111110x
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
在 ざい ASCII碼的範圍 はんい ,用 よう 一 いち 個 こ 位 い 元 もと 組 くみ 表示 ひょうじ ,超 ちょう 出 で ASCII碼的範圍 はんい 就用位 い 元 もと 組 くみ 表示 ひょうじ ,這就形成 けいせい 了 りょう 我 わが 們上面 めん 看 み 到 いた 的 てき UTF-8的 てき 表示 ひょうじ 方法 ほうほう ,這樣的 てき 好 こう 處 しょ 是 ぜ 當 とう UNICODE檔案中 ちゅう 只 ただ 有 ゆう ASCII碼時,儲 もうか 存 そん 的 てき 檔案都 と 為 ため 一 いち 個 こ 位 い 元 もと 組 くみ ,所以 ゆえん 就是普通 ふつう 的 てき ASCII檔案無 む 異 こと ,讀取 よみと 的 てき 時候 じこう 也是如此,所以 ゆえん 能 のう 與 あずか 以前 いぜん 的 てき ASCII檔案相 しょう 容 よう 。
大 だい 於ASCII碼的,就會由 よし 上面 うわつら 的 てき 第 だい 一位元組的前幾位表示該unicode字 じ 元 もと 的 てき 長 ちょう 度 ど ,比 ひ 如110xxxxx前 ぜん 三位的二進位表示告訴我們這是個2BYTE的 てき UNICODE字 じ 元 もと ;1110xxxx是 これ 個 こ 三 さん 位 い 的 てき UNICODE字 じ 元 もと ,依 よ 此類推 るいすい ;xxx的 てき 位置 いち 由 よし 字 じ 元 もと 編 へん 碼數的 てき 二進製表示的位填入。越 こし 靠 もたれ 右 みぎ 的 てき x具有 ぐゆう 越 えつ 少 しょう 的 てき 特殊 とくしゅ 意義 いぎ 。只 ただ 用 よう 最短 さいたん 的 てき 那 な 個 こ 足 あし 夠表達 たち 一個字元編碼數的多位元組串。注意 ちゅうい 在 ざい 多 た 位 い 元 もと 組 くみ 串 くし 中 ちゅう ,第 だい 一個位元組的開頭"1"的 てき 數 すう 目 もく 就是整 せい 個 こ 串 くし 中位 ちゅうい 元 もと 組 ぐみ 的 てき 數 すう 目 もく 。
ASCII字母 じぼ 繼續 けいぞく 使用 しよう 1位 い 元 もと 組 ぐみ 儲 もうか 存 そん ,重 じゅう 音 おと 文字 もじ 、希 まれ 臘字母 はは 或 ある 西里 にしざと 爾 なんじ 字母 じぼ 等 とう 使用 しよう 2位 い 元 もと 組 ぐみ 來 らい 儲 もうか 存 そん ,而常用 じょうよう 的 てき 漢字 かんじ 就要使用 しよう 3位 い 元 もと 組 ぐみ 。輔助平面 へいめん 字 じ 元 もと 則 のり 使用 しよう 4位 い 元 もと 組 ぐみ 。
在 ざい UTF-8+BOM格式 かくしき 檔案的 てき 開 ひらき 首 くび ,很多時 じ 都 と 放置 ほうち 一 いち 個 こ U+FEFF字 じ 元 もと (UTF-8以EF,BB,BF代表 だいひょう ),以顯示 けんじ 這個文字 もじ 檔案是 ぜ 以UTF-8編 へん 碼。
UTF-8圖表 ずひょう 說明 せつめい
UTF-8
最小 さいしょう 碼位
0000
最大 さいだい 碼位
10FFFF
每 まい 位 い 元 もと 組 くみ 所 しょ 佔位數 すう
8 bits
Byte order
N/A
每 まい 個 こ 字 じ 元 もと 最小 さいしょう 位 い 元 もと 組 くみ 數 すう
1
每 まい 個 こ 字 じ 元 もと 最大 さいだい 位 い 元 もと 組 くみ 數 すう
4
UCS字 じ 元 もと U+0000到 いた U+007F(ASCII)被 ひ 編 へん 碼為位 い 元 もと 組 くみ 0x00到 いた 0x7F(ASCII相 しょう 容 よう ),這也意味 いみ 着 ぎ 只 ただ 包含 ほうがん 7位 い ASCII字 じ 元 もと 的 てき 檔案在 ざい ASCII和 わ UTF-8兩 りょう 種 しゅ 編 へん 碼方式 しき 下 か 是 ぜ 一 いち 樣 よう 的 てき 。
所有 しょゆう >U+007F的 てき UCS字 じ 元 もと 被 ひ 編 へん 碼為一個多個位元組的串,每 まい 個 こ 位 い 元 もと 組 くみ 都 と 有 ゆう 標記 ひょうき 位 い 集 しゅう 。因 よし 此,ASCII位 い 元 もと 組 ぐみ (0x00-0x7F)不可能 ふかのう 作為 さくい 任 にん 何 なん 其他字 じ 元 もと 的 てき 一 いち 部分 ぶぶん 。
表示 ひょうじ 非 ひ ASCII字 じ 元 もと 的 てき 多 た 位 い 元 もと 組 くみ 串 くし 的 てき 第 だい 一個位元組總是在0xC0到 いた 0xFD的 てき 範圍 はんい 裏 うら ,並 なみ 指出 さしで 這個字 じ 元 もと 包含 ほうがん 多少 たしょう 個 こ 位 い 元 もと 組 ぐみ 。多 た 位 い 元 もと 組 ぐみ 串 くし 的 てき 其餘位 い 元 もと 組 くみ 都 と 在 ざい 0x80到 いた 0xBF範圍 はんい 裏 うら ,這使得 とく 重 おも 新 しん 同 どう 步 ふ 非常 ひじょう 容易 ようい ,並 なみ 使 し 編 へん 碼無國界 こっかい ,且很少 しょう 受丟失 しつ 位 い 元 もと 組 くみ 的 てき 影響 えいきょう 。
可 か 以編入 へんにゅう 所有 しょゆう 可能 かのう 的 てき 231個 いっこ UCS代 だい 碼
UTF-8編 へん 碼字元 もと 理論 りろん 上 じょう 可 か 以最多 た 到 いた 6個 こ 位 い 元 もと 組長 くみちょう ,然 しか 而16位 い 元 もと BMP字 じ 元 もと 最多 さいた 只 ただ 用 よう 到 いた 3位 い 元 もと 組長 くみちょう 。
Bigendian UCS-4位 い 元 もと 組 ぐみ 串 くし 的 てき 排列 はいれつ 順序 じゅんじょ 是 ぜ 預 あずか 定 てい 的 てき 。
位 い 元 もと 組 ぐみ 0xFE和 わ 0xFF在 ざい UTF-8編 へん 碼中從 したがえ 未 み 用 もちい 到 いた ,同時 どうじ ,UTF-8以位元 もと 組 ぐみ 為 ため 編 へん 碼單元 たんげん ,它的位 い 元 もと 組 くみ 順序 じゅんじょ 在 ざい 所有 しょゆう 系統 けいとう 中 なか 都 と 是 ぜ 一 いち 様 よう 的 てき ,沒 ぼつ 有 ゆう 位 い 元 もと 組 くみ 序 じょ 的 てき 問題 もんだい ,也因此它實際 じっさい 上 じょう 並 なみ 不 ふ 需要 じゅよう BOM 。
與 あずか UTF-16或 ある 其他Unicode編 へん 碼相比 ひ ,對 たい 於不支援 しえん Unicode和 わ XML的 てき 系統 けいとう ,UTF-8更 さら 不 ふ 容易 ようい 造成 ぞうせい 問題 もんだい 。
總體 そうたい 來 らい 說 せつ ,在 ざい Unicode字 じ 串 くし 中 ちゅう 不可能 ふかのう 由 よし 碼點數量 すうりょう 決定 けってい 顯示 けんじ 它所需要 じゅよう 的 てき 長 ちょう 度 ど ,或 ある 者 もの 顯示 けんじ 字 じ 串 くし 之 これ 後 ご 在 ざい 文字 もじ 緩衝 かんしょう 區 く 中 ちゅう 游 ゆう 標 しめぎ 應 おう 該放置 ほうち 的 てき 位置 いち ;組合 くみあい 字 じ 元 もと 、變 へん 寬 ひろし 字 じ 型 がた 、不可 ふか 列 れつ 印字 いんじ 元和 がんわ 從 したがえ 右 みぎ 至 いたり 左 ひだり 的 てき 文字 もじ 都 と 是 ぜ 其歸因 いん 。
所以 ゆえん 儘管在 ざい UTF-8字 じ 串 くし 中 ちゅう 字 じ 元 もと 數量 すうりょう 與 あずか 碼點數量 すうりょう 的 てき 關係 かんけい 比 ひ UTF-32更 さら 為 ため 複雜 ふくざつ ,在 ざい 實際 じっさい 中 ちゅう 很少會 かい 遇 ぐう 到 いた 有 ゆう 不同 ふどう 的 てき 情 じょう 形 がた 。
更 さら 詳細 しょうさい 的 てき 說 せつ ,UTF-8編 へん 碼具有 ぐゆう 以下 いか 幾 いく 點 てん 優 ゆう 點 てん :
ASCII是 ぜ UTF-8的 てき 一 いち 個 こ 子 こ 集 しゅう 。因 よし 為 ため 一 いち 個 こ 純 じゅん ASCII字 じ 串 くし 也是一 いち 個 こ 合法 ごうほう 的 てき UTF-8字 じ 串 くし ,所以 ゆえん 現存 げんそん 的 てき ASCII文字 もじ 不 ふ 需要 じゅよう 轉換 てんかん 。為 ため 傳統 でんとう 的 てき 擴充 かくじゅう ASCII字 じ 元 もと 集 しゅう 設計 せっけい 的 てき 軟件通常 つうじょう 可 か 以不經 けい 修 おさむ 改 あらため 或 ある 很少修 おさむ 改 あらため 就能與 あずか UTF-8一 いち 起 おこり 使用 しよう 。
使用 しよう 標準 ひょうじゅん 的 てき 面 めん 向 むこう 位 い 元 もと 組 くみ 的 てき 排 はい 序 じょ 常 つね 式 しき 對 たい UTF-8排 はい 序 じょ 將 しょう 產 さん 生 なま 與 あずか 基 もと 於Unicode代 だい 碼點排 はい 序 じょ 相 しょう 同 どう 的 てき 結果 けっか 。(儘管這只有 ゆう 有限 ゆうげん 的 てき 有用 ゆうよう 性 せい ,因 いん 為 ため 在任 ざいにん 何 なん 特定 とくてい 語 ご 言 げん 或 ある 文化 ぶんか 下 か 都 と 不 ふ 太 ふと 可能 かのう 有 ゆう 仍可接受 せつじゅ 的 てき 文字 もじ 排列 はいれつ 順序 じゅんじょ 。)
UTF-8和 わ UTF-16都 と 是 ぜ 可 か 延伸 えんしん 標記 ひょうき 式 しき 語 ご 言 げん 文 ぶん 件 けん 的 てき 標準 ひょうじゅん 編 へん 碼。所有 しょゆう 其它編 へん 碼都必須 ひっす 通過 つうか 顯 あらわ 式 しき 或 ある 文字 もじ 聲明 せいめい 來 らい 指定 してい 。[1] (頁 ぺーじ 面 めん 存 そん 檔備份 ,存 そん 於互聯網 もう 檔案館 かん )
任 にん 何 なに 面 めん 向 こう 位 い 元 もと 組 ぐみ 的 てき 字 じ 串 くし 搜 さがせ 尋 ひろ 演算 えんざん 法 ほう 都 と 可 か 以用於UTF-8的 てき 數 すう 據 よりどころ (只 ただ 要 よう 輸入 ゆにゅう 僅由完 かん 整 せい 的 てき UTF-8字 じ 元 もと 組成 そせい )。但 ただし 是 ぜ ,對 たい 於包含 ほうがん 字 じ 元 もと 記數 きすう 的 てき 正則 せいそく 表 ひょう 達 たち 式 しき 或 ある 其它結構 けっこう 必須 ひっす 小心 しょうしん 。
UTF-8字 じ 串 くし 可 か 以由一個簡單的演算法可靠地辨識出來。就是,一個字串在任何其它編碼中表現為合法的UTF-8的 てき 可能 かのう 性 せい 很低,並 なみ 隨 ずい 字 じ 串 くし 長 ちょう 度 ど 增長 ぞうちょう 而減小 しょう 。舉例說 せつ ,字 じ 元 もと 值C0,C1,F5至 いたり FF從來 じゅうらい 沒 ぼつ 有 ゆう 出現 しゅつげん 。為 ため 了 りょう 更 さら 好 このみ 的 てき 可 か 靠 もたれ 性 せい ,可 か 以使用 しよう 正則 せいそく 表 ひょう 達 たち 式 しき 來 らい 統計 とうけい 非 ひ 法 ほう 過 か 長和 おさわ 替 がえ 代 だい 值(可 か 以檢視 し W3 FAQ: Multilingual Forms (頁 ぺーじ 面 めん 存 そん 檔備份 ,存 そん 於互聯網 もう 檔案館 かん )上 じょう 的 てき 驗 けん 證 しょう UTF-8字 じ 串 くし 的 てき 正則 せいそく 表 ひょう 達 たち 式 しき )。
與 あずか UCS-2的 てき 比較 ひかく :ASCII轉換 てんかん 成 なり UCS-2,在 ざい 編 へん 碼前插入 そうにゅう 一 いち 個 こ 0x0。用 よう 這些編 へん 碼,會 かい 含括一 いち 些控制 せい 符 ふ ,比 ひ 如"或 ある '/',這在UNIX和 わ 一 いち 些C函數 かんすう 中 ちゅう ,將 しょう 會 かい 產 さん 生 せい 嚴重 げんじゅう 錯誤 さくご 。因 よし 此可以肯定 こうてい ,UCS-2不適合 ふてきごう 作為 さくい Unicode的 てき 外部 がいぶ 編 へん 碼,也因此誕生 せい 了 りょう UTF-8。
如果一 いち 個 こ UTF-8 解析 かいせき 器 き 寫 うつし 得 とく 很差(並 なみ 且與當 とう 前 ぜん 標準 ひょうじゅん 的 てき 版本 はんぽん 不 ふ 相 あい 容 よう ),那 な 麼它接收 せっしゅう 到 いた 一 いち 些偽 UTF-8 時 じ 會 かい 將 はた 其轉換 てんかん 成 なり 看 み 似 に 正確 せいかく 實則 さねつね 錯誤 さくご 的 てき Unicode 輸出 ゆしゅつ 。處理 しょり 八位表示的校驗常式可能遺漏一些資訊。
不利 ふり 於正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく
編輯 へんしゅう
正則 せいそく 表 ひょう 達 たち 式 しき 可 か 以進行 しんこう 很多進 しん 階 かい 的 てき 英文 えいぶん 模糊 もこ 檢索 けんさく 。例 れい 如,[a-h]表示 ひょうじ a 到 いた h 間 あいだ 所有 しょゆう 字母 じぼ 。
同樣 どうよう GBK 編 へん 碼的中 ちゅう 文也 ふみや 可 か 以這樣 さま 利用 りよう 正則 せいそく 表 ひょう 達 たち 式 しき ,比 ひ 如在只 ただ 知道 ともみち 一個字的讀音而不知道怎麼寫的情況下,也可用 よう 正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく ,因 いん 為 ため GBK 編 へん 碼是按讀音 おん 排 はい 序 じょ 的 てき 。但 ただし 是 ぜ Unicode 漢字 かんじ 不 ふ 是 ぜ 按讀音 おん 排 はい 序 じょ 的 てき ,所以 ゆえん 不利 ふり 於用正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく 。雖然正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく 並 なみ 未 み 考慮 こうりょ 中 ちゅう 文 ぶん 的 てき 多 た 音字 おんじ ,但 ただし 是 ぜ 由 よし 於中文 ぶん 的 てき 多 た 音字 おんじ 數量 すうりょう 不 ふ 多 た ,不 ふ 少 しょう 多 た 音字 おんじ 還 かえ 是 ぜ 同音 どうおん 不 ふ 同調 どうちょう 類型 るいけい 的 てき 多 た 音字 おんじ ,所以 ゆえん 大 だい 多數 たすう 情況 じょうきょう 下 か 正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく 是 ぜ 還 かえ 可 か 以接受 せつじゅ 的 てき 。不 ふ 過 か Unicode 漢字 かんじ 按部首 ぶしゅ 排 はい 序 じょ ,因 いん 此在只 ただ 知道 ともみち 一個字的部首而不知道如何發音的情況下,UTF-8 可用 かよう 正則 せいそく 表 ひょう 達 たち 式 しき 檢索 けんさく 而 GBK 不 ふ 行 くだり 。
可能 かのう 無法 むほう 用 よう 舊 きゅう 的 てき C 語 ご 言 げん 函 はこ 式 しき 庫 こ 讀寫
編輯 へんしゅう
由 よし 於UTF-8在 ざい 編 へん 碼中可能 かのう 有 ゆう 着 ぎ 空 そら 字 じ 元 もと (null character,U+0000),這會導 しるべ 致C語 ご 言 げん 函 はこ 示 しめせ 庫 こ 以及其延伸 えんしん 的 てき 程 ほど 式 しき 解析 かいせき 失敗 しっぱい ,因 いん 為 ため 這些舊 きゅう 有 ゆう 的 てき 程 ほど 式 しき 庫 こ 使用 しよう 這個字 じ 元來 がんらい 標記 ひょうき 字 じ 串 くし 的 てき 結束 けっそく 。然 しか 而,之 これ 所以 ゆえん 說 せつ 「可能 かのう 」,是 ぜ 因 いん 為 ため 這個字 じ 元 もと 是 ぜ 控 ひかえ 制 せい 字 じ 元 もと ,理論 りろん 上 じょう 不 ふ 會 かい 出 で 現在 げんざい XML 等 ひとし 純 じゅん 文字 もじ 檔案中 ちゅう 。當 とう 萬不得已要使用空字元的時候,可能 かのう 的 てき 解決 かいけつ 方法 ほうほう 是 ぜ 考慮 こうりょ 使用 しよう Java 的 てき 變種 へんしゅ UTF-8 ——使用 しよう 0xc0 0x80 來 らい 編 へん 碼空字 じ 元 もと 。
UTF-8 的 てき ASCII 字 じ 元 もと 只 ただ 佔用一 いち 個 こ 位 い 元 もと 組 くみ ,比較 ひかく 節 ぶし 省 しょう 空間 くうかん ,但 ただし 是 ぜ 更 さら 多 た 字 じ 元 もと 的 てき UTF-8 編 へん 碼佔用 よう 的 てき 空間 くうかん 就要多 た 出 で 1/2,特別 とくべつ 是 ぜ 中 ちゅう 文 ぶん 、日 にち 文和 ふみかず 韓 かん 文 ぶん (CJK )這樣的 てき 方 かた 塊 かたまり 文字 もじ ,它們大 だい 多 た 需要 じゅよう 三 さん 個 こ 位 い 元 もと 組 ぐみ 。
雖然不 ふ 是 ぜ 標準 ひょうじゅん ,但 ただし 許多 きょた Windows程 ほど 式 しき (包括 ほうかつ Windows記事 きじ 本 ほん )在 ざい UTF-8編 へん 碼的檔案的 てき 開 ひらき 首 くび 加入 かにゅう 一 いち 段位 だんい 元 もと 組 ぐみ 串 くし EF BB BF
。這是位 い 元 もと 組 ぐみ 順序 じゅんじょ 記號 きごう U+FEFF
的 てき UTF-8編 へん 碼結果 けっか 。對 たい 於沒有 ゆう 預 あずか 期 き 要 よう 處理 しょり UTF-8的 てき 文字 もじ 編輯 へんしゅう 器 き 和 かず 瀏 りゅう 覽 らん 器 き 會 かい 顯示 けんじ 成 なり ISO-8859-1字 じ 串 くし 
。
Posix系統 けいとう 明確 めいかく 不 ふ 建議 けんぎ 使用 しよう 位 い 元 もと 組 くみ 序 じょ 遮 さえぎ 罩EF BB BF
。[ 14] 因 いん 為 ため 很多文字 もじ 檔案期 き 望 もち 以 「#!」(Shebang )開 ひらき 頭 あたま 指示 しじ 要 よう 執行 しっこう 的 てき 程 ほど 式 しき 。Linux系統 けいとう 選擇 せんたく 使用 しよう Unicode規範 きはん 形式 けいしき Normalization Form C(NFC),即 そく 優先 ゆうせん 使用 しよう 預 あずか 組 ぐみ 裝 そう 字 じ 元 もと (precomposed character)而非組合 くみあい 字 じ 元 もと 序列 じょれつ (combining character sequence)。
2002年 ねん 9月 がつ 發 はつ 佈的Red Hat Linux 8.0 才 ざい 開始 かいし 正式 せいしき 把 わ 大 だい 多數 たすう 區域 くいき 設置 せっち 的 てき 預 あずか 設 しつらえ 編 へん 碼設為 ため UTF-8。此前是 ぜ 各種 かくしゅ 語 ご 言 げん 的 てき 但 ただし 位 くらい 元 もと 組 くみ 編 へん 碼為主 ぬし 。2004年 ねん 9月 がつ SuSE Linux 9.1 開始 かいし ,預 あずか 設 しつらえ 編 へん 碼遷移 せんい 為 ため UTF-8。
字 じ 串 くし 處理 しょり 時 じ ,使用 しよう UTF-8或 ある locale依賴 いらい 的 てき 多 た 位 い 元 もと 組 くみ 編 へん 碼情形 がた ,比 ひ 使用 しよう C語 ご 言 げん wchar_t的 てき 寬 ひろし 字 じ 元 もと 固定 こてい 寬 ひろし 度 ど 編 へん 碼,要 よう 慢1至 いたり 2個 こ 數量 すうりょう 級 きゅう 。[ 14]
在 ざい 通常 つうじょう 用法 ようほう 下 か ,Java 程 ほど 式 しき 語 ご 言 げん 在 ざい 通過 つうか InputStreamReader
和 わ OutputStreamWriter
讀取 よみと 和 わ 寫 うつし 入 にゅう 串 くし 的 てき 時候 じこう 支援 しえん 標準 ひょうじゅん UTF-8。但 ただし 是 ぜ ,Java也支援 しえん 一種 いっしゅ 非 ひ 標準 ひょうじゅん 的 てき 變體 へんたい UTF-8,供 きょう 對象 たいしょう 的 てき 序列 じょれつ 化 か ,Java本地 ほんじ 介 かい 面 めん 和 かず 在 ざい class檔案中 ちゅう 的 てき 嵌入 かんにゅう 常數 じょうすう 時 じ 使用 しよう 的 てき modified UTF-8
。
標準 ひょうじゅん 和 わ 變種 へんしゅ 的 てき UTF-8有 ゆう 兩個 りゃんこ 不 ふ 同點 どうてん 。第 だい 一 いち ,空 そら 字 じ 元 もと (null character,U+0000)使用 しよう 雙 そう 位 い 元 もと 組 くみ 的 てき 0xc0 0x80,而不是 ぜ 單位 たんい 元 もと 組 ぐみ 的 てき 0x00。這保證 ほしょう 了 りょう 在 ざい 已 やめ 編 へん 碼字串 くし 中 ちゅう 沒 ぼつ 有 ゆう 嵌入 かんにゅう 空位 くうい 元 もと 組 ぐみ 。因 よし 為 ため C語 ご 言 げん 等 とう 語 かたり 言 げん 程 ほど 式 しき 中 ちゅう ,單位 たんい 元 もと 組 ぐみ 空 そら 字 じ 元 もと 是 ぜ 用 よう 來 らい 標 しるべ 誌 し 字 じ 串 くし 結尾 けつび 的 てき 。當 とう 已 やめ 編 へん 碼字串 くし 放 ひ 到 いた 這樣的 てき 語 ご 言 げん 中 ちゅう 處理 しょり ,一個嵌入的空字元將把字串一刀兩斷。
第 だい 二 に 個 こ 不同 ふどう 點 てん 是 ぜ 基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん 之 これ 外字 がいじ 元 もと 的 てき 編 へん 碼的方法 ほうほう 。在 ざい 標準 ひょうじゅん UTF-8中 ちゅう ,這些字 じ 元 もと 使用 しよう 4位 い 元 もと 組 ぐみ 形式 けいしき 編 へん 碼,而在修正 しゅうせい 的 てき UTF-8中 ちゅう ,這些字 じ 元和 げんな UTF-16一樣首先表示為代理對(surrogate pairs),然 しか 後 ご 再 さい 像 ぞう CESU-8 那 な 樣 さま 按照代理 だいり 對 たい 分別 ふんべつ 編 へん 碼。這樣修正 しゅうせい 的 てき 原因 げんいん 更 さら 是 ぜ 微妙 びみょう 。Java中 ちゅう 的 てき 字 じ 元 もと 為 ため 16位 い 元長 もとなが ,因 いん 此一些Unicode字 じ 元 もと 需要 じゅよう 兩個 りゃんこ Java字 じ 元來 がんらい 表示 ひょうじ 。語 かたり 言 げん 的 てき 這個性質 せいしつ 蓋 ぶた 過 か 了 りょう Unicode的 てき 增補 ぞうほ 平面 へいめん 的 てき 要求 ようきゅう 。儘管如此,為 ため 了 りょう 要 よう 保持 ほじ 良好 りょうこう 的 てき 向 こう 下相 おりあい 容 よう 、要 よう 改變 かいへん 也不容易 ようい 了 りょう 。這個修正 しゅうせい 的 てき 編 へん 碼系統 けいとう 保證 ほしょう 了 りょう 一個已編碼字串可以一次編為一個UTF-16碼,而不是 ぜ 一 いち 次 じ 一 いち 個 こ Unicode碼點。不幸 ふこう 的 てき 是 ぜ ,這也意味 いみ 着 ぎ UTF-8中 ちゅう 需要 じゅよう 4位 い 元 もと 組 ぐみ 的 てき 字 じ 元 もと 在 ざい 變種 へんしゅ UTF-8中 ちゅう 變成 へんせい 需要 じゅよう 6位 い 元 もと 組 ぐみ 。
因 いん 為 ため 變種 へんしゅ UTF-8並 なみ 不 ふ 是 ぜ UTF-8,所以 ゆえん 用 よう 戶 と 在 ざい 交換 こうかん 資 し 訊和使用 しよう 互聯網 もう 的 てき 時候 じこう 需要 じゅよう 特別 とくべつ 注意 ちゅうい 不要 ふよう 誤 あやま 把 わ 變種 へんしゅ UTF-8當 とう 成 なり UTF-8數 すう 據 よりどころ 。
Mac OS X 作業 さぎょう 系統 けいとう 使用 しよう 統 すべ 一碼正規形式中的分解式標準等價(canonically decomposed Unicode),在 ざい 檔案系統 けいとう 中 ちゅう 使用 しよう UTF-8編 へん 碼進行 しんこう 檔案命名 めいめい ,這做法 ほう 通常 つうじょう 被 ひ 稱 しょう 為 ため UTF-8-MAC。分解 ぶんかい 式 しき 標準 ひょうじゅん 等價 とうか 中 ちゅう ,預 あずか 組合 くみあい 字 じ 元 もと 是 ぜ 被 ひ 禁止 きんし 使用 しよう 的 てき ,必須 ひっす 以組合 くみあい 字 じ 元 もと 取 と 代 だい 。
這種方法 ほうほう 使 し 分類 ぶんるい 變 へん 得 どく 非常 ひじょう 簡單 かんたん ,但 ただし 是 ぜ 會 かい 搞混那 な 些使用 しよう 預 あずか 組合 くみあい 字 じ 元 もと 為 ため 標準 ひょうじゅん 、組合 くみあい 字 じ 元 もと 用 よう 來 らい 顯示 けんじ 特殊 とくしゅ 字 じ 元 もと 的 てき 軟件。Mac系統 けいとう 的 てき 這種NFD數 すう 據 よりどころ 是 ぜ 統一 とういつ 碼正規 せいき 形式 けいしき (Unicode normalization)的 てき 一 いち 種 しゅ 格式 かくしき 。而其他 た 系統 けいとう ,包括 ほうかつ Windows 和 わ Linux ,使用 しよう 統一 とういつ 碼規範 きはん 的 てき NFC形式 けいしき ,也是W3C 標準 ひょうじゅん 使用 しよう 的 てき 形式 けいしき 。所以 ゆえん 通常 つうじょう NFD數 すう 據 よりどころ 必須 ひっす 轉換 てんかん 成 なり NFC才能 さいのう 被 ひ 其他平台 ひらだい 或 ある 者 もの 網 もう 絡 からま 使用 しよう 。
蘋果開發 かいはつ 者 しゃ 專 せん 區 く 有 ゆう 關 せき 於此問題 もんだい 的 てき 討論 とうろん :Apple Q&A 1173 (頁 ぺーじ 面 めん 存 そん 檔備份 ,存 そん 於互聯網 もう 檔案館 かん )。
MySQL 字 じ 元 もと 編 へん 碼集中有 ちゅうう 兩 りょう 套UTF-8編 へん 碼實現 じつげん :「utf8」和 かず 「utf8mb4」,其中「utf8」是 ぜ 一個字最多佔據3位 い 元 もと 組 ぐみ 空間 くうかん 的 てき 編 へん 碼實現 じつげん ;而「utf8mb4」則 のり 是 ぜ 一個字最多佔據4位 い 元 もと 組 ぐみ 空間 くうかん 的 てき 編 へん 碼實現 じつげん ,也就是 ぜ UTF-8的 てき 完 かん 整 せい 實現 じつげん 。這是由 よし 於MySQL在 ざい 4.1版本 はんぽん 開始 かいし 支援 しえん UTF-8編 へん 碼(當時 とうじ 參考 さんこう UTF-8草案 そうあん 版本 はんぽん 為 ため RFC 2279 )時 じ ,為 ため 2003年 ねん ,並 なみ 且在同年 どうねん 9月 がつ 限 げん 制 せい 了 りょう 其實現 じつげん 的 てき UTF-8編 へん 碼的空間 くうかん 佔用最多 さいた 為 ため 3位 い 元 もと 組 ぐみ ,而UTF-8正式 せいしき 形成 けいせい 標準 ひょうじゅん 化 か 文 ぶん 件 けん (RFC 3629 )是 ぜ 其之後 ご 。限 きり 制 せい UTF-8編 へん 碼實現 じつげん 的 てき 編 へん 碼空間 あいだ 佔用一般 いっぱん 被 ひ 認 みとめ 為 ため 是 ぜ 考慮 こうりょ 到 いた 資料 しりょう 庫 こ 檔案設計 せっけい 的 てき 相 しょう 容 よう 性 せい 和 やわ 讀取 よみと 最 さい 佳 けい 化 か ,但 ただし 實際 じっさい 上 じょう 並 なみ 沒 ぼつ 有 ゆう 達 たち 到 いた 目的 もくてき ,而且在 ざい UTF-8編 へん 碼開始 かいし 出現 しゅつげん 需要 じゅよう 存 そん 入 にゅう 非 ひ 基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん 的 てき Unicode字 じ 元 もと (例 れい 如emoji字 じ 元 もと )時 じ 導 しるべ 致無法 ほう 存 そん 入 いれ (由 ゆかり 於3位 い 元 もと 組 ぐみ 的 てき 實現 じつげん 只 ただ 能 のう 存 そん 入 にゅう 基本 きほん 多 た 文 ぶん 種 しゅ 平面 へいめん 內的字 じ 元 もと )。直 ちょく 到 いた 2010年 ねん 在 ざい 5.5版本 はんぽん 推出「utf8mb4」來 らい 代替 だいたい 、「utf8」重 じゅう 新 しん 命名 めいめい 為 ため 「utf8mb3」並 なみ 調整 ちょうせい 「utf8」為 ため 「utf8mb3」的 てき 別名 べつめい ,並 なみ 不 ふ 建議 けんぎ 使用 しよう 舊 きゅう 「utf8」編 へん 碼,以此修正 しゅうせい 遺留 いりゅう 問題 もんだい 。[ 15] [ 16] [ 17] [ 18]
^ 1.0 1.1 Davis, Mark . Unicode over 60 percent of the web . Official Google Blog. 2012-02-03 [2019-11-23 ] . (原始 げんし 內容存 そん 檔 於2018-08-09).
^ Pike, Rob. UTF-8 history . 2003-04-30 [2019-11-23 ] . (原始 げんし 內容存 そん 檔 於2006-10-29). ...UTF-8 was designed, in front of my eyes, on a placemat in a New Jersey diner one night in September or so 1992...So that night Ken wrote packing and unpacking code and I started tearing into the C and graphics libraries. The next day all the code was done... .
^ Pike, Rob; Thompson, Ken. Hello World or Καλημέρα κόσμε or こんにちは 世界 せかい (PDF) . Proceedings of the Winter 1993 USENIX Conference. 1993 [2019-11-23 ] . (原始 げんし 內容存 そん 檔 (PDF) 於2017-10-11).
^ Encoding Standard . encoding.spec.whatwg.org. [2019-11-23 ] . (原始 げんし 內容存 そん 檔於2015-02-04) (英語 えいご ) . The problems outlined here go away when exclusively using UTF-8, which is one of the many reasons that is now the mandatory encoding for all things.
^ Usage Survey of Character Encodings broken down by Ranking . w3techs.com. [2019-11-23 ] . (原始 げんし 內容存 そん 檔 於2022-01-21) (英語 えいご ) .
^ Historical trends in the usage of character encodings . [2019-11-14 ] .
^ UTF-8 Usage Statistics . BuiltWith. [2011-03-28 ] . (原始 げんし 內容存 そん 檔 於2021-12-07).
^ Using International Characters in Internet Mail . Internet Mail Consortium. 1998-08-01 [2007-11-08 ] . (原始 げんし 內容存 そん 檔 於2007-10-26).
^ Specifying the document's character encoding , HTML5.2, World Wide Web Consortium , 14 December 2017 [2018-06-03 ] , (原始 げんし 內容存 そん 檔 於2019-06-13)
^ 參考 さんこう RFC 2277 section 3.1
^ Using International Characters in Internet Mail . 2007-10-26 [2018-07-27 ] . 原始 げんし 內容存 そん 檔於2007-10-26.
^ The Unicode Standard, Version 13.0, Chapter 3 (PDF) . [2020-03-23 ] . (原始 げんし 內容存 そん 檔 (PDF) 於2021-09-20).
^ ISO 10646标准下 か 载页面 めん . [2020-03-23 ] . (原始 げんし 內容存 そん 檔 於2022-01-19).
^ 14.0 14.1 UTF-8 and Unicode FAQ for Unix/Linux by Markus Kuhn . [2005-06-16 ] . (原始 げんし 內容存 そん 檔 於2018-09-24).
^ MySQL :: MySQL 8.0 Reference Manual :: 10.9.3 The utf8 Character Set (Alias for utf8mb3) . dev.mysql.com. [2020-04-03 ] . (原始 げんし 內容存 そん 檔 於2021-10-31).
^ MySQL :: MySQL 8.0 Reference Manual :: 10.9.2 The utf8mb3 Character Set (3-Byte UTF-8 Unicode Encoding) . dev.mysql.com. [2020-04-03 ] . (原始 げんし 內容存 そん 檔 於2022-01-13).
^ MySQL :: MySQL 8.0 Reference Manual :: 10.9.1 The utf8mb4 Character Set (4-Byte UTF-8 Unicode Encoding) . dev.mysql.com. [2020-04-03 ] . (原始 げんし 內容存 そん 檔 於2021-10-25).
^ Hooper, Adam. In MySQL, never use “utf8”. Use “utf8mb4”. . Medium. 2019-08-19 [2020-04-03 ] . (原始 げんし 內容存 そん 檔 於2020-11-30) (英語 えいご ) .
The Unicode Standard, Version 5.0, Fifth Edition , The Unicode Consortium, Addison-Wesley Professional,2006年 ねん 10月 がつ 27日 にち 。ISBN 0-321-48091-0
The Unicode Standard, Version 4.0 , The Unicode Consortium, Addison-Wesley Professional,2003年 ねん 8月 がつ 27日 にち 。ISBN 0-321-18578-1