什么是ANSI编码格式?它是系统默认格式吗? 它和ASCII有什么不同?


当前回答

当使用单字节字符时,ASCII格式定义了前127个字符。128-255的扩展字符由各种ANSI代码页定义,以允许对其他语言的有限支持。为了理解ANSI编码的字符串,您需要知道它使用哪个代码页。

其他回答

ASCII只是定义了一个有128个符号的7位代码页。ANSI将其扩展到8位,并且对于符号128到255有几个不同的代码页。

命名ANSI是不正确的,因为它实际上是定义此代码页的ISO/IEC 8859规范。参考ISO/ iec8859。从ISO/IEC 8859-1到ISO/IEC 8859-16共有16个代码页。

Windows-1252也是基于ISO/IEC 8859-1进行了一些修改,主要是在C1控件的范围内设置为128到159。维基百科指出,Windows-1252也被称为ISO-8859-1,在ISO和8859之间有第二个连字符。(难以置信!谁会做这种事?!?)

如果你的电脑不是“西方”电脑,你不知道使用哪个代码页,你可以看看这个页面:国家语言支持(NLS) API参考

[微软删除了此引用,将其从web存档的国家语言支持(NLS) API引用中取出

或者您可以查询您的注册表:

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

End of search: 1 match(es) found.

C:\>

ANSI(又名Windows-1252/WinLatin1)是拉丁字母的字符编码,非常类似于ISO-8859-1。 你可以去维基百科上看看。

Once upon a time Microsoft, like everyone else, used 7-bit character sets, and they invented their own when it suited them, though they kept ASCII as a core subset. Then they realised the world had moved on to 8-bit encodings and that there were international standards around, such as the ISO-8859 family. In those days, if you wanted to get hold of an international standard and you lived in the US, you bought it from the American National Standards Institute, ANSI, who republished international standards with their own branding and numbers (that's because the US government wants conformance to American standards, not international standards). So Microsoft's copy of ISO-8859 said "ANSI" on the cover. And because Microsoft weren't very used to standards in those days, they didn't realise that ANSI published lots of other standards as well. So they referred to the standards in the ISO-8859 family (and the variants that they invented, because they didn't really understand standards in those days) by the name on the cover, "ANSI", and it found its way into Microsoft user documentation and hence into the user community. That was about 30 years ago, but you still sometimes hear the name today.

严格地说,没有所谓的ANSI编码。通俗地说,术语ANSI用于几种不同的编码:

ISO 8859 - 1 Windows CP1252 Windows机器上的当前系统编码(用Win32 API术语)。