Provided by: manpages-zh_1.5-1_all bug

NAME

       charsets - 程式對字符集和國際化的觀點

yz
       Linux     是一荌篕琠坁漣@業系統。它的各種各樣實用程式和設    備驅動程式
       (包括控制台驅動程式              )               支持多種語言的字符集,
       包括帶有附加符號的拉丁字母表字符,奏符,連字(字母結合),
       和全部非拉丁文字母表(包括希臘語,古代斯拉夫語,阿拉伯語, 和希伯來語。
       )

       這份手冊以程式的眼光去看待不同的字符集標準,以及它怓O如何   在   Linux
       中調和在一起的。討論的標準包括 ASCII,ISO 8859,KOI8-R ,  Unicode,ISO
       2022 和 ISO 4873 。

ASCII

       ASCII     (,美國國家信息交換(用)標準(代)碼)    是最初的    7-bit字符集,
       鴠是為美式^語設p的。當前它被 ECMA-6 標準所描z。

       在^國使用一種           ASCII的變體(這變體是:用^國磅熔顫馴N替美國的
       crosshatch/octothorpe/hash    的磅顫飽^;當需n時,   美國的(符號)和-
       ^國的變體(符號)可以用"US ASCII"和"UK ASCII" 作為區別。

       因為 Linux 是為美國設p的硬體寫的, 它生來就支持 US ASCII 。

ISO 8859

       ISO 8859 是一系列 10 8-bit 字符集,它包含美國 ASCII 的低位 (7  -bit  ),
       128 ~159 S圍內的不可見控制字符,和 96 茤w寬圖形(字符)在 160-255 裏。
       。LP 這些字符集中,最南是 ISO 8859-1 (  Latin-1  )。  它生來就被  Linux
       控制台驅動程式支持, X11R6 的支持得也很好,並且是 HTML 的基礎字符集。

       Linux  下控制台也支持其他的  8859 字符集 ,通過使用者模式實用程式( 例如
       setfont(8))          來蚹嬼雿L綁定和           EGA           圖形表格,
       以及進行控制台驅動程式裏的字型表格中的「user mapping(使用者影射)」。

       下惇O每荈隻X簡短的描z:

       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',和(當)需n用帶有上挑筆的 ghe
              寫正確的ghe.參見下悸滿]關於)KOI8-R                     的討論。
              (譯注:這些外國人書寫習慣我怳]不怎麼需n理解吧,希望上悸爾挭壑τ
              把人搞糊塗了)

       8859-6 支持阿拉伯語。                                            8859-6
              字型表是分離字符格式的一種固定的字型,但是一茼X適
              的顯示引擎應該聯合這些來使用合適的詞滿A中間字母,和最後表格式。

       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  仍然比這些需-
              n更多的 奏符號。

       8859-13 (Latin-7)

       8859-14 (Latin-8)

       8859-15
              增加了歐洲符號和法國連字,它怓O Latin-1 裏缺漏的。

KOI8-R

       KOI8-R  是在俄國流行的一茷D  ISO  字符集。下半部分是 US ASCII; 上部是比
       ISO 8859-5 設p的更好的古斯拉夫字符集。

       控制台為了支持 KOI8-R 字符集,在 Linux 下, 可以利用使用者模式實用程式-
       蚹嬼雿L綁定和  EGA  圖形表格, 以及在控制台的驅動程式中使用字型表「user
       mapping(使用者映射)」。

UNICODE,[http://www.unicode.com>獲得。

       Linux  使用8位的  Unicode  轉移格式  (UTF-8  )  表示  Unicode 。 UTF-8
       是可變長的 Unicode 編碼。使用1茼r節給 7 bit  編碼,使用2茼r節給  11
       bit   編碼,   使用3茼r節給  16  bit  編碼,使用4茼r節給  21  bit
       編碼,使用5茼r節給 26 bit 編碼,使用6茼r節給 31 bit 編碼

       讓 0,1 , x  代表零,一,或任意的位。字節0xxxxxxx  代表Unicode  00000000
       0xxxxxxx,  這茞顫鼎M  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 編碼,那麼這荅髒N會延伸 到 6 字節編碼)

       對於    ISO-8859-1    的使用者而言,這意味著帶高位的字符編碼成兩茼r節。
       這會令普通的純文字檔增大1到2茼吨擢I。不過沒有變換問題,  因為  Unicode
       ISO-8859-1  符號的巧韞L怐  ISO-8859-1      (用   8   茷e導零做前綴)
       。對於日語的使用者,這意味著鴩荓`用的  16  位編碼將 佔 3 茼r節,並且還-
       n求有擴展的映射表。許多日本人因此比較喜歡 ISO 2022 。

       注意    UTF-8    是自我同步的:    10xxxxxx    是一條尾巴,     任何其它
       的字節是編碼的頭。ASCII      字節出現在      UTF-8     流中唯一的可能是
       作為自己出現。特別是, 不會有 NULs 或 " /'s 嵌入在那些比較大的編碼中。

       因為編碼中的 ASCII,特別是,  NUL  和'/',  沒有變化,  所以核心不會注意到
       在使用 UTF-8。它根本不在乎它正在處理的那字節代表什麼東西。

       Unicode   數據流的呈現通常是通過"  subfont  "表來操作,這茠磹O  Unicode
       的一茪l集到字符表格的映射。核心內部使用  Unicode  描z裝載入顯示記憶體的
       subfont。這意味著在       UTF-8       中的一蚍狾       能使用      512
       茪ㄕP的符號。這對於日語,漢語和朝鮮語來說是不夠的,
       但是它滿足了大多數其它用途。

ISO 2022 AND ISO 4873

       ISO  2022  和  4873  標準描z了一荌簼  VT100 實現的字型控制模型. Linux
       核心和 xterm (1) ( 部分 ) 支持這蚍珓活C 它在日本和韓國很流行。

       它有  4  蚢洇峈漲r符集,稱為  G0   ,   G1   ,   G2   和   G3   ,並且
       其中之一是當前的高位為0      的編碼的字符集(最初      G0     ),而他怳
       一是當前的高位為1的編碼的字符集(最初 G1 )。每種圖形的字符集有 94 或 96
       茼r符 ,並且是實際上是一 7-bit字符集。 它使用 040-0177 ( 041-0176 ) 或
       0240-0377  (  0241-0376  )編碼  中的一荂CG0   大小總是為   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)
       標記為當前字符集, 只用於下一茼r符( 不管它的高位的O什麼)

       94 字符的集合用做 GnrO@khC ESC ( xx ]  G0^AESC  )
       xx   ]   G1^A   ESC   *   xx   ]   G2^AESC  +  xx  ]奇
       G3^ANDo    xx    O@     Ob     ISO     2375
       `UsXr@C   pAESC   (   @      ISO   646
       r@GOA ESC ( A  UK r(SNrO),  ESC  (  B
        ASCII ( Nyqf), ESC ( M Dwy@rA ESC
       ( ! A jr, . .

       94 字符的集合用做 GnrO@khC ESC - xx ] G1^,  ESC  .
       xx  ]  G2^    ESC  /  xx  ]  G3^D  p,  ESC  - G
       Br@ G1.

       多字節的字符集用做 Gn 字符集是用一荌k逸序列 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@chinese.com>

[]
       2000/10/23

mlinuxan:
       http://cmpp.linuxforum.net