2.5.2.1. Windows中的Code Page分类:ANSI和OEM

Windows中的Code Page,按照引用领域来划分,可以分为两类:ANSI Code Page和 OEM Code Page

2.5.2.1.1. Windows的ANSI Code Page表

ANSI Code Page的官网正式叫法其实是Windows Code Page。但是由于ANSI Code Page被误用的太广泛了,索性微软也就接受了此叫法,然后就叫做ANSI Code Page了。

类似地,ANSI Code Page=ANSI Windows Code Page

[提示]Windows的Code Page为何被误称为ANSI Code Page

Windows的Code Page中用的最广泛的是Windows 1252,其用于英语和西欧语言字符。

Windows 1252是基于ANSI草案(ANSI draft)而设计的。

结果,本来叫做Windows Code Page,就被很多不熟悉的人误读为ANSI Code Page

而实际上,(作为标准制定者的)ANSI和ISO,都从来没有去标准化Windows的Code Page,即没有为Windows Code Page指定过任何标准。

但是呢,由于ANSI Code Page被误用的太普遍了,导致微软官方也都承认此叫法了。

总之,记住一点,ANSI Code Page,就是Windows Code Page,就行了。

ANSI Code Page主要是用于Windows系统中,本地编码是非Unicode的,图形用户界面(GUI)程序。

ANSI的Code Page相关的表格,参见第 3.1.1 节 “ANSI Code Page表”

2.5.2.1.2. Windows的OEM Code Page表

OEM Code Page主要是用于Windows系统中的命令行界面(console)程序,虚拟DOS。

OEM Code Page可以视为是DOS和IBM PC时代的(过渡)剩余产品。

除了ANSI Code Page之外,之所以又设计出一个OEM Code Page,是因为:

  1. 兼容性

    因为作为新的图形用户界面系统的Windows,也要兼容旧的命令行程序,即向后兼容性。

  2. 字体和硬件的要求

    字体和旧的VGA硬件建议,文字图形界面所用的编码,最好和Code Page 437兼容。

    多数的OEM的Code Page,和(非ASCII的)后半部分的CP437,都是公用同一套代码点(code point)的。

    一般的OEM Code Page的后半段编码,和ANSI Code Page,完全不同。不过,对于部分双字节编码的,定长的Code Page(如泰语的847,越南语的1258)和多字节CJK编码的Code Page(如932,936,949,950)来说,ANSI和OEM的Code Page,都用的同一套编码。

和OEM Code Page相关的表格,参见第 3.1.2 节 “OEM Code Page表”

2.5.2.1.3. 一些常见的Code Page表

其中,ANSI和OEM共有的一些Code Page,可参见第 3.1.3 节 “ANSI和OEM共有的Code Page表”

而其他一些常见的Code Page,可参见第 3.1.4 节 “其他一些常见的Code Page表”