Windows 1252和ISO 8859-1之间的区别(ISO 8859-1就是Latin-1,但1252与Latin1略有不同)

时间:2023-03-09 01:46:12
Windows 1252和ISO 8859-1之间的区别(ISO 8859-1就是Latin-1,但1252与Latin1略有不同)

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和ISO 8859-1之间的区别(ISO 8859-1就是Latin-1,但1252与Latin1略有不同) Windows 1252 vs. ANSI
  1. 类似Windows的Code Page为何被误称为ANSI Code Page,Windows 1252也被误称为ANSI编码,所以此处也可以说是ANSI编码和ISO 8859-1之间的区别。
  2. 而由于ISO 8859-1对应的Latin-1的西欧语言,所以此处也可以称为ANSI编码和ISO Latin-1之间的区别,比如[16]
  3. 微软的此种变体,有各种叫法:ANSI/Windows-1252/Windows Latin-1

    甚至有些微软的程序将其叫做Western European (Windows)。

    更有甚至,由于不清楚,而错称其为ASCII

Windows 1252和ISO 8859-1之间的区别(ISO 8859-1就是Latin-1,但1252与Latin1略有不同) 包含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