什么是ANSI格式?

什么是ANSI编码格式?它是系统默认格式吗? 它和ASCII有什么不同?< / p >
414983 次浏览

ANSI(又名Windows-1252/WinLatin1)是拉丁字母的字符编码,非常类似于iso - 8859 - 1。 你可能想看看在维基百科上。< / p >

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

美国信息交换标准代码只是定义了一个有128个符号的7位代码页。ANSI将其扩展到8位,并且对于符号128到255有几个不同的代码页。

命名ANSI是不正确的,因为它实际上是定义此代码页的ISO/IEC 8859规范。参考ISO / IEC 8859。从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之间有第二个连字符。(难以置信!谁会做这种事?!?)

ANSI编码是一个稍微通用的术语,用于指系统(通常是Windows)上的标准代码页。它在西方/美国被更恰当地称为windows - 1252系统。(它可以表示其他系统上的某些其他Windows代码页。)这本质上是一个ASCII字符集的扩展,因为它包括所有的ASCII字符和额外的128个字符代码。这种差异是由于“ANSI”编码是8位而不是像ASCII那样是7位(ASCII现在几乎总是被编码为8位字节,最高有效位设置为0)。关于为什么这种编码通常被称为ANSI的解释,请参阅文章。

“ANSI”这个名字是不恰当的,因为它不对应任何实际的ANSI标准,但这个名字一直存在。ANSI与UTF-8不同。

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

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

基本上“ANSI”指的是Windows上的遗留代码页。请参见Raymond Chen的一篇文章:

这是因为Windows代码页1252最初是基于ANSI草案,后来成为ISO标准8859-1。

在大多数代码页中,前127个字符与ASCII相同,但上面的字符有所不同。

然而,ANSI的自动表示CP1252或拉丁1。

尽管有很多困惑,但您现在应该简单地避免这些问题,并使用Unicode。

我记得当“ANSI”文本引用伪VT-100转义码通过ANSI在DOS中可用。SYS驱动程序来改变流文本....可能不是你所指的,但如果它是http://en.wikipedia.org/wiki/ANSI_escape_code

从技术上讲,ANSI应该与US-ASCII相同。它指的是ANSI X3.4标准,这只是ANSI组织批准的ASCII版本。顶部位集字符的使用在ASCII/ANSI中没有定义,因为它是一个7位字符集。

然而,多年来DOS和随后的Windows社区对该术语的误用,已经使其实际含义成为“正在使用的任何机器的系统代码页”。系统码页有时也被称为“mbcs”,因为在东亚系统中,它可以是每个字符多字节编码。一些代码页甚至可以使用顶部清除字节作为多字节序列中的尾随字节,因此它甚至不严格兼容纯ASCII…但即使这样,它仍然被称为“ANSI”。

在美国和西欧的默认设置中,“ANSI”映射到Windows代码页1252。这与ISO-8859-1不同(尽管它们非常相似)。在其他机器上,它可能是其他任何东西。这使得“ANSI”作为外部编码标识符完全无用。

曾几何时,微软和其他公司一样,使用7位字符集,他们在适合自己的时候发明了自己的字符集,尽管他们把ASCII作为核心子集。然后他们意识到世界已经转向了8位编码,并且有了国际标准,比如ISO-8859系列。在那些日子里,如果你住在美国,想要获得一个国际标准,你可以从美国国家标准协会(ANSI)那里购买,他们用自己的品牌和编号重新发布国际标准(这是因为美国政府想要符合美国标准,而不是国际标准)。所以微软的ISO-8859拷贝在封面上写着“ANSI”。因为微软当时还不太习惯标准,他们没有意识到ANSI也发布了很多其他标准。所以他们在封面上用“ANSI”这个名字来指代ISO-8859家族中的标准(以及他们发明的变体,因为当时他们并不真正理解标准),它进入了微软的用户文档,因此进入了用户社区。那是大约30年前的事了,但今天你有时还会听到这个名字。

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

[微软删除了这个引用,从web-archive中取它国家语言支持(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:\>