NAME
charsets - 程 序 員 對 字 符 集 和 國 際 化 的 觀 點
描 述
Linux 是 一 個 國 際 性 的 操 作 系 統 。 它 的 各 種 各 樣 實 用 程 序 和 設 備 驅 動 程 序 (包 括 控 制 檯 驅 動 程 序 ) 支 持 多 種 語 言 的 字 符 集 , 包 括 帶 有 附 加 符 號 的 拉 丁 字 母 表 字 符 , 重 音 符 , 連 字 (字 母 結 合 ), 和 全 部 非 拉 丁 文 字 母 表 ( 包 括 希 臘 語 , 古 代 斯 拉 夫 語 , 阿 拉 伯 語 , 和 希 伯 來 語 。 ) 這 份 手 冊 以 程 序 員 的 眼 光 去 看 待 不 同 的 字 符 集 標 準 , 以 及 它 們 是 如 何 在 Linux 中 調 和 在 一 起 的 。 討 論 的 標 準 包 括 ASCII, ISO 8859, KOI8-R , Unicode, ISO 2022 和 ISO 4873 。
ASCII
ASCII (,美 國 國 家 信 息 交 換 (用 )標 準 (代 )碼 ) 是 最 初 的 7-bit字 符 集 , 原 先 是 爲 美 式 英 語 設 計 的 。 當 前 它 被 ECMA-6 標 準 所 描 述 。 在 英 國 使 用 一 種 ASCII的 變 體 ( 這 變 體 是 : 用 英 國 磅 值 的 符 號 代 替 美 國 的 crosshatch/octothorpe/hash 的 磅 值 符 號 ) ;當 需 要 時 , 美 國 的 ( 符 號 ) 和 英 國 的 變 體 ( 符 號 ) 可 以 用 "US ASCII"和 "UK ASCII" 作 爲 區 別 。 因 爲 Linux 是 爲 美 國 設 計 的 硬 件 寫 的 , 它 生 來 就 支 持 US ASCII 。
ISO 8859
ISO 8859 是 一 系 列 10 8 -bit 字 符 集 ,它 包 含 美 國 ASCII 的 低 位 (7 -bit ), 128 ~ 159 範 圍 內 的 不 可 見 控 制 字 符 , 和 96 個 定 寬 圖 形 ( 字 符 ) 在 160-255 裏 。 。 LP 這 些 字 符 集 中 , 最 重 要 是 ISO 8859-1 ( Latin-1 )。 它 生 來 就 被 Linux 控 制 檯 驅 動 程 序 支 持 , X11R6 的 支 持 得 也 很 好 , 並 且 是 HTML 的 基 礎 字 符 集 。
Linux 下
控 制 檯 也 支 持
其 他 的 8859 字 符 集
, 通 過 用 戶 模
式 實 用 程 序 ( 例
如 setfont(8)) 來 修
改 鍵 盤 綁 定 和 EGA
圖 形 表 格 , 以
及 進 行 控 制 檯
驅 動 程 序 裏 的
字 體 表 格 中 的
“ user mapping(用 戶 影 射
)”。 下 面 是 每
個 集 合 簡 短 的
描 述 :
8859-1 (Latin-1)
Latin-1 覆 蓋 大 多 數 的 西 歐 語 言 , 比 如 阿 爾 巴 尼 亞 , 加 泰 羅 尼 亞 語 , 丹 麥 , 荷 蘭 ,英 語 ,法 羅 羣 島 ,芬 蘭 ,法 語 ,德 語 ,加 利 西 亞 ,愛 爾 蘭 ,冰 島 , 意 大 利 , 挪 威 , 葡 萄 牙 , 西 班 牙 和 瑞 典 。 缺 少 荷 蘭 的 ij連 字 ( i與 j合 字 ) , 法 國 的 oe( o與 e合 字 ) 和 舊 風 格 的 ’,,’ 而 德 語 中 ’’( 這 樣 的 ) 引 號 是 可 以 的 。
8859-2 (Latin-2)
Latin-2 支 持 大 多 數 的 拉 丁 文 書 寫 的 斯 拉 夫 語 和 中 歐 的 語 言 : 克 羅 地 亞 , 捷 克 語 , 德 語 , 匈 牙 利 , 波 蘭 , 羅 馬 尼 亞 , 斯 洛 伐 克 , 和 斯 洛 文 尼 亞 。
8859-3 (Latin-3)
Latin-3 是 世 界 語 ,加 里 西 亞 , 馬 耳 他 人 , 和 土 耳 其 語 作 者 受 歡 迎 的 ( 語 言 ) 。
8859-4 (Latin-4)
Latin-4 介 紹 了 愛 沙 尼 亞 語 , 拉 托 維 亞 , 和 立 陶 宛 的 字 符 。 它 是 實 質 上 過 時 的 ; 參 見 8859-10 (Latin-6 ) 。
8859-5 古 代 斯 拉 夫 語 字 母 支 持 保 加 利 亞 語 , 白 俄 羅 斯 語 ,馬 其 頓 語 , 俄 語 , 塞 爾 維 亞 語 和 烏 克 蘭 語 。 烏 克 蘭 人 讀 帶 有 下 挑 筆 的 |
’geh’爲 ’heh’,和 ( 當 ) 需 要 用 帶 有 上 挑 筆 的 ghe 寫 正 確 的 ghe.參 見 下 面 的 ( 關 於 ) KOI8-R 的 討 論 。 ( 譯 註 : 這 些 外 國 人 書 寫 習 慣 我 們 也 不 怎 麼 需 要 理 解 吧 , 希 望 上 面 的 解 釋 不 要 把 人 搞 糊 塗 了 )
8859-6 支 持 阿 拉 伯 語 。 |
8859-6 字 型 表 是 分 離 字 符 格 式 的 一 種 固 定 的 字 體 , 但 是 |
一 個 合 適 的 顯 示 引 擎 應 該 聯 合 這 些 來 使 用 合 適 的 詞 首 , 中 間 字 母 , 和 最 後 表 格 式 。
8859-7 支 持 現 代 的 希 臘 語 。 |
||
8859-8 支 持 希 伯 來 語 。 |
8859-9 (Latin-5) 這
是 Latin-1 的 一 種 變
體 , 它 用 土 耳
其 語 的 一 些 (
字 符 ) 代 替 很
少 用 的 冰 島 語
。
8859-10 (Latin-6)
Latin 6 增 加 末 因 紐 特 (譯 : 對 於 last Inuit 我 不 知 道 是 否 是 對 的 ) (格 陵 蘭 語 ) 和 Sami ( 拉 普 蘭 語 ) , 這 些 是 Lattin 4 中 缺 少 的 , 來 覆 蓋 整 個 北 歐 地 區 ( 的 字 符 集 ) 。 RFC 1345 列 出 了 初 步 的 和 不 同 的 “ latin 6 "。 Skolt Sami 仍 然 比 這 些 需 要 更 多 的 重 音 符 號 。
8859-13 (Latin-7)
8859-14 (Latin-8)
8859-15 增 加 了 歐 洲
符 號 和 法 國 連
字 , 它 們 是 Latin-1
裏 缺 漏 的 。
KOI8-R
KOI8-R 是 在 俄 國 流 行 的 一 個 非 ISO 字 符 集 。 下 半 部 分 是 US ASCII; 上 部 是 比 ISO 8859-5 設 計 的 更 好 的 古 斯 拉 夫 字 符 集 。 控 制 檯 爲 了 支 持 KOI8-R 字 符 集 , 在 Linux 下 , 可 以 利 用 用 戶 模 式 實 用 程 序 修 改 鍵 盤 綁 定 和 EGA 圖 形 表 格 , 以 及 在 控 制 檯 的 驅 動 程 序 中 使 用 字 體 表 “user mapping( 用 戶 映 射 ) ”。
UNICODE( 統 [單 ]一 代 碼 ,寬 [雙 ]字 節 字 符 集 )
Unicode( ISO 10646 ) 是 一 個 標 準 , 它 的 目 標 是 明 白 地 表 現 在 每 種 人 類 語 言 中 的 每 種 已 知 字 符 。 Unicode 的 編 碼 是 32 位 的 ( 舊 些 的 版 本 使 用 了 16 位 ) 。 在 Unicode 的 一 些 信 息 可 以 在 <http://www.unicode.com>獲; 得 。
Linux 使 用 8 位 的 Unicode 轉 移 格 式 (UTF-8 ) 表 示 Unicode 。 UTF-8 是 可 變 長 的 Unicode 編 碼 。 使 用 1 個 字 節 給 7 bit 編 碼 , 使 用 2 個 字 節 給 1 1 bit 編 碼 , 使 用 3 個 字 節 給 1 6 bit 編 碼 , 使 用 4 個 字 節 給 2 1 bit 編 碼 , 使 用 5 個 字 節 給 2 6 bit 編 碼 , 使 用 6 個 字 節 給 3 1 bit 編 碼 讓 0,1 , x 代 表 零 , 一 , 或 任 意 的 位 。 字 節 0xxxxxxx 代 表 Unicode 00000000 0xxxxxxx, 這 個 符 號 和 ASCII 0xxxxxxx 編 碼 的 符 號 是 一 樣 。 這 樣 , ASCII 沒 有 改 爲 UTF-8, 並 且 只 用 ASCII 的 人 不 會 注 意 到 任 何 變 化 : 不 在 代 碼 , 並 且 不 在 文 件 大 小 。 字 節 110xxxxx 是 一 個 2 字 節 代 碼 的 開 始 , 110xxxxx 10yyyyyy 組 裝 成 00000xxx xxyyyyyy 。 字 節 1110xxxx 是 一 個 3 字 節 代 碼 的 開 始 , 1110xxxx 10yyyyyy 10zzzzzz 被 組 裝 成 xxxxyyyy yyzzzzzz。 ( 如 果 UTF-8 使 用 31-bit ISO 10646 編 碼 , 那 麼 這 個 級 數 就 會 延 伸 到 6 字 節 編 碼 ) 對 於 ISO-8859-1 的 用 戶 而 言 , 這 意 味 着 帶 高 位 的 字 符 編 碼 成 兩 個 字 節 。 這 會 令 普 通 的 文 本 文 件 增 大 1 到 2 個 百 分 點 。 不 過 沒 有 變 換 問 題 , 因 爲 Unicode ISO-8859-1 符 號 的 值 等 於 他 們 的 ISO-8859-1 值 (用 8 個 前 導 零 做 前 綴 ) 。 對 於 日 語 的 用 戶 , 這 意 味 着 原 來 常 用 的 16 位 編 碼 將 佔 3 個 字 節 , 並 且 還 要 求 有 擴 展 的 映 射 表 。 許 多 日 本 人 因 此 比 較 喜 歡 ISO 2022 。 注 意 UTF-8 是 自 我 同 步 的 : 10xxxxxx 是 一 條 尾 巴 , 任 何 其 它 的 字 節 是 編 碼 的 頭 。 ASCII 字 節 出 現 在 UTF-8 流 中 唯 一 的 可 能 是 作 爲 自 己 出 現 。 特 別 是 , 不 會 有 NULs 或 " /’s 嵌 入 在 那 些 比 較 大 的 編 碼 中 。 因 爲 編 碼 中 的 ASCII, 特 別 是 , NUL 和 ’/’, 沒 有 變 化 , 所 以 內 核 不 會 注 意 到 在 使 用 UTF-8。 它 根 本 不 在 乎 它 正 在 處 理 的 那 字 節 代 表 什 麼 東 西 。
Unicode 數 據 流 的 呈 現 通 常 是 通 過 " subfont "表 來 操 作 , 這 個 表 是 Unicode 的 一 個 子 集 到 字 符 表 格 的 映 射 。 內 核 內 部 使 用 Unicode 描 述 裝 載 入 顯 示 內 存 的 subfont。 這 意 味 着 在 UTF-8 中 的 一 個 模 式 能 使 用 512 個 不 同 的 符 號 。 這 對 於 日 語 , 漢 語 和 朝 鮮 語 來 說 是 不 夠 的 , 但 是 它 滿 足 了 大 多 數 其 它 用 途 。
ISO 2022 AND ISO 4873
ISO 2022 和 4873 標 準 描 述 了 一 個 基 於 VT100 實 現 的 字 體 控 制 模 型 . Linux 內 核 和 xterm (1) ( 部 分 ) 支 持 這 個 模 型 。 它 在 日 本 和 韓 國 很 流 行 。 它 有 4 個 圖 形 的 字 符 集 , 稱 爲 G0 , G1 , G2 和 G3 , 並 且 其 中 之 一 是 當 前 的 高 位 爲 0 的 編 碼 的 字 符 集 (最 初 G0 ),而 他 們 之 一 是 當 前 的 高 位 爲 1 的 編 碼 的 字 符 集 (最 初 G1 )。 每 種 圖 形 的 字 符 集 有 94 或 96 個 字 符 , 並 且 是 實 際 上 是 一 個 7-bit字 符 集 。 它 使 用 040-0177 ( 041-0176 ) 或 0240-0377 ( 0241-0376 )編 碼 中 的 一 個 。 G0 大 小 總 是 爲 94, 並 且 使 用 041-0176 之 間 的 編 碼 。 字 符 之 間 切 換 用 轉 換 ( shift functions) 功 能 ^N (SO 或 LS1), ^O (SI 或 LS0), ESC n (LS2), ESC o (LS3), ESC N (SS2), ESC O (SS3), ESC ~ (LS1R), ESC } (LS2R), ESC | (LS3R). LSn 把 字 符 集 Gn標 記 爲 當 前 字 符 集 , 用 於 高 位 爲 0 的 編 碼 。 LSnR 把 字 符 集 Gn標 記 爲 當 前 字 符 集 , 用 於 高 位 爲 1 的 編 碼 。 SSn 把 字 符 集 Gn (n=2 or 3) 標 記 爲 當 前 字 符 集 , 只 用 於 下 一 個 字 符 ( 不 管 它 的 高 位 的 值 是 什 麼 )
94 字 符 的 集 合 用 做 Gn 字 符 集 是 用 一 個 逃 逸 序 列 ESC ( xx ( 用 於 G0) , ESC ) xx ( 用 於 G1) , ESC * xx ( 用 於 G2) , ESC + xx ( 用 於 G3) , 等 代 表 的 . 這 裏 的 xx 是 一 個 符 號 或 者 是 在 ISO 2375 國 際 註 冊 編 碼 字 符 集 中 的 一 對 符 號 。 例 如 , ESC ( @ 選 用 ISO 646 字 符 集 作 爲 GO, ESC ( A 選 用 UK 標 準 字 符 集 (用 磅 代 替 數 字 記 號 ), ESC ( B 選 擇 ASCII ( 用 美 元 代 替 流 通 貨 幣 ), ESC ( M 爲 非 洲 語 言 選 擇 一 個 字 符 集 , ESC ( ! A 選 擇 古 巴 字 符 集 , 等 等 . 等 等 .
94 字 符 的 集 合 用 做 Gn 字 符 集 是 用 一 個 逃 逸 序 列 ESC - xx ( 對 於 G1) , ESC . xx ( 對 於 G2) 或 ESC / xx ( 對 於 G3) 等 表 示 . 例 如 , ESC - G 選 擇 希 伯 萊 字 母 表 作 爲 G1. 多 字 節 的 字 符 集 用 做 Gn 字 符 集 是 用 一 個 逃 逸 序 列 ESC $ xx 或 者 ESC $ ( xx ( 對 於 G0) , ESC $ ) xx ( 對 於 G1) , ESC $ * xx ( 對 於 G2) , ESC $ + xx ( 對 於 G3) 等 來 表 示 . 例 如 , ESC $ ( C 爲 G0選 擇 韓 國 字 符 集 . 日 本 字 符 集 合 由 ESC $ B選 擇 更 多 臨 近 的 版 本 由 ESC & @ ESC $ B選 擇 .
ISO 4873 規 定 了 一 個 範 圍 比 較 窄 的 使 用 字 符 集 , 它 的 G0是 固 定 的 (總 是 ASCII), 所 以 G1, G2 和 G3只 能 被 調 用 於 高 次 序 位 編 碼 集 。 尤 其 是 , 不 再 使 用 ^N 和 ^O, ESC ( xx 僅 用 於 xx=B, 和 ESC ) xx, ESC * xx, ESC + xx 分 別 等 價 於 ESC - xx, ESC . xx, ESC / xx.
參 考
console(4), console_ioctl(4), console_codes(4), ascii(7), iso_8859_1(7), unicode(7), utf-8(7)
[中 文 版 維 護 人 ]
Scorpio <rawk [AT] chinese.com>
[中 文 版 最 新 更 新 ]
2000/10/23
《 中 國 linux論 壇 man手 冊 頁 翻 譯 計 劃 》 :
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh