擴展ASCII

擴展ASCII

在小型電腦開發的初期,就已經嚴格地建立了8位元位元組。因此,如果使用一個位元組來保存字元,則需要128個附加的字元來補充ASCII。1981年,當最初的IBM PC推出時,視訊卡的ROM中燒有一個提供256個字元的字元集,這也成為IBM標準的一個重要組成部分。

IBM擴展字元集


最初的IBM擴展字元集包括某些帶重音的字元和一個小寫希臘字母表(在數學符號中非常有用),還包括一些塊型和線狀圖形字元。附加的字元也被添加到ASCII控制字元的編碼位置,這是因為大多數控制字元都不是拿來顯示用的。
該IBM擴展字元集被燒進無數顯示卡和印表機的ROM中,並被許多應用程式用於修飾其文字模式的顯示方式。不過,該字元集並沒有為所有使用拉丁字母表的西歐語言提供足夠多的帶重音字元,而且也不適用於Windows。Windows不需要圖形字元,因為它有一個完全圖形化的系統。

ANSI字元集


Windows 1.0(1985年11月發行)中,Microsoft沒有完全放棄IBM擴展字元集,但它已退居第二重要位置。因為遵循了ANSI草案和ISO標準,純Windows字元集被稱作「ANSI字元集」。ANSI草案和ISO標準最終成為ANSI/ISO 8859-1-1987,即「American National Standard for Information Processing-8-Bit Single-Byte Coded Graphic Character Sets-Part 1: Latin Alphabet No 1」,通常也簡寫為「Latin 1」。
在Windows 1.0的《Programmer's Reference》中印出了ANSI字元集的最初版本。
0- 1- 2- 3- 4- 5- 6- 7- 8- 9- A- B- C- D- E- F-
-0 * * 0 @ P ` p * * ° À Ð à ð
-1 * * ! 1 A Q a q * * ¡ ± Á Ñ á ñ
-2 * * " 2 B R b r * * ¢ ² Â ò â ò
-3 * * # 3 C S c s * * £ ³ Ã ó ã ó
-4 * * $ 4 D T d t * * ¤ ´ Ä ô ä ô
-5 * * % 5 E U e u * * ¥ µ Å õ å õ
-6 * * & 6 F V f v * * ¦ ¶ Æ ö æ ö
-7 * * ' 7 G W g w * * § · Ç * ç *
-8 * * ( 8 H * h * * * ¨ ¸ È ø è ø
-9 * * ) 9 I Y I y * * © ¹ É Ù é ù
-A * * * : J Z j z * * ª º Ê Ú ê ú
-B * * + ; K [ k { * * « » Ë Û ë û
-C * * , < L \ l | * * ¬ ¼ Ì Ü ì ü
-D * * - = M ] m } * * ­ ½ Í Ý í ý
-E * * . > N ^ n ~ * * ® ¾ Î Þ î þ
-F * * / ? * _ o DEL * * ¯ ¿ Ï ß ï ÿ
* - not applicable
空方框表示該位置未定義字元。這與ANSI/ISO 8859-1的最終定義一致。ANSI/ISO 8859-1僅顯示了圖形字元,而沒有控制字元,因此沒有定義DEL。此外,代碼0xA0定義為一個非斷開的空格(這意味著在編排格式時,該字元不用於斷開一行),代碼0xAD是一個軟連字元(表示除非在行尾斷開單詞時使用,否則不顯示)。此外,ANSI/ISO 8859-1將代碼0xD7定義為乘號(*),0xF7為除號(/)。Windows中的某些字體也定義了從0x80到0x9F的某些字元,但這些不是ANSI/ISO 8859-1標準的一部分。

內碼錶


MS-DOS 3.3(1987年4月發行)向IBM PC用戶引進了內碼錶(code page)的概念,Windows也使用此概念。內碼錶定義了字元的映射代碼。最初的IBM字元集被稱作內碼錶437,或者「MS-DOS Latin US)。內碼錶850就是「MS-DOS Latin 1」,它用附加的帶重音字母代替了一些線形字元。其他內碼錶被其他語言定義。最低的128個代碼總是相同的;較高的128個代碼取決於定義內碼錶的語言。
MS-DOS中,如果用戶為PC的鍵盤、顯示卡和印表機指定了一個內碼錶,然後在PC上創建、編輯和列印文件,一切都很正常,每件事都會保持一致。然而,如果用戶試圖與使用不同內碼錶的用戶交換檔案,或者在機器上改變內碼錶,就會產生問題。字元碼與錯誤的字元相關聯。應用程式能夠將內碼錶資訊與文件一起保存來試圖減少問題的產生,但該策略包括了某些在內碼錶間轉換的工作。
雖然內碼錶最初僅提供了不包括帶重音符號字母的附加拉丁字元集,但最終內碼錶的較高的128個字元還是包括了完整的非拉丁字母,例如希伯來語希臘語斯拉夫語。自然,如此多樣會導致內碼錶變得混亂;如果少數帶重音的字母未正確顯示,那麼整個文字便會混亂不堪而不可閱讀。

內碼錶的擴展


內碼錶的擴展正是基於所有這些原因,但是還不夠。斯拉夫語的MS-DOS內碼錶855與斯拉夫語的Windows內碼錶1251以及斯拉夫語的Macintosh內碼錶10007不同。每個環境下的內碼錶都是對該環境所作的標準字元集修正。IBM OS/2也支援多種EBCDIC內碼錶。