標籤:
2.6.5. ANSI字元編碼和Windows 1252
Windows為了支援英語和西歐字元,自己設計了一個編碼,對應的在Code Page號是1252,被稱為Windows 1252。
Windows 1252的設計,是參考了ANSI草案(ANSI Draft)。
而ANSI draft後來發展成為正式的國際標準:ISO 8859-1
即,Windows 1252是在其成為正式標準ISO 8859-1之前而設計的,因此很容易理解,Windows 1252和ISO 8859-1不是完全等同的。
下面就來簡要說說兩者的區別。
2.6.5.1. Windows 1252和ISO 8859-1之間的區別
Windows 1252和ISO 8859-1基本等同
有點不同的是,在128-159(0x80-0x9F)的範圍的值,ISO 8859-1編碼為控制字元,而微軟編碼為可列印字元。
|
Windows 1252 vs. ANSI |
- 類似Windows的Code Page為何被誤稱為ANSI Code Page,Windows 1252也被誤稱為ANSI編碼,所以此處也可以說是ANSI編碼和ISO 8859-1之間的區別。
- 而由於ISO 8859-1對應的Latin-1的西歐語言,所以此處也可以稱為ANSI編碼和ISO Latin-1之間的區別,比如[16]
微軟的此種變體,有各種叫法:ANSI/Windows-1252/Windows Latin-1 甚至有些微軟的程式將其叫做Western European (Windows)。 更有甚至,由於不清楚,而錯稱其為ASCII
|
|
包含Lattin-1的內容在Notepad中顯示亂碼 |
因此,如果你把包含了128-159範圍內的ISO Latin-1編碼的檔案,用Windows的記事本Notepad去另存新檔為ANSI的話,則會導致檔案內容被錯誤處理了。 因為本身的那些128-159的字元,是控制字元,但是卻被Notepad識別為可列印的字元了。 |
總之,對於Windows 1252,目前的各種叫法,可以理解為:
ANSI = Windows 1252 = CP 1252 = Windows code page 1252 = Windows Latin-1
http://www.crifan.com/files/doc/docbook/char_encoding/release/html/char_encoding.html#ansi_and_windows_1252
http://vlaurie.com/computers2/Articles/characters.htm
https://zh.wikipedia.org/wiki/ISO/IEC_8859-1
Windows 1252和ISO 8859-1之間的區別(ISO 8859-1就是Latin-1,但1252與Latin1略有不同)