什么是ANSI格式?

时间:2009-03-31 16:26:45

标签: character-encoding ascii ansi codepages

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

10 个答案:

答案 0 :(得分:211)

ANSI编码是一个稍微通用的术语,用于指代系统上的标准代码页,通常是Windows。在西方/美国,它被更恰当地称为Windows-1252。系统。 (它可以表示其他系统上的某些其他Windows code pages。)这基本上是extension of the ASCII character set,因为它包含所有带有128个字符代码的ASCII字符。这种差异是由于“ANSI”编码是8位而不是7位,因为ASCII(ASCII现在几乎总是编码为8位字节,MSB设置为0)。请参阅文章,了解为何此编码通常称为ANSI。

名称“ANSI”用词不当,因为它不符合任何实际的ANSI标准,但名称已卡住。 ANSI与UTF-8不同。

答案 1 :(得分:52)

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

然而,DOS和随后的Windows社区多年来滥用该术语已经将其实际意义留作“正在使用的任何机器的系统代码页”。系统代码页有时也称为“mbcs”,因为在东亚系统上可以是每字符多字节编码。有些代码页甚至可以在多字节序列中使用最高位清除字节作为尾随字节,因此它甚至不能与纯ASCII严格兼容......但即便如此,它仍称为“ANSI”。

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

答案 2 :(得分:28)

严格地说,没有ANSI编码这样的东西。通俗地说,术语ANSI用于几种不同的编码:

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

答案 3 :(得分:14)

曾几何时,微软和其他所有人一样,使用7位字符集,并且在适合它们的时候发明了自己的,尽管他们将ASCII作为核心子集。然后他们意识到世界已经转向8位编码,并且有国际标准,例如ISO-8859系列。在那些日子里,如果你想获得一个国际标准并且你住在美国,你是从美国国家标准协会ANSI购买的,他们用他们自己的品牌和数字重新发布了国际标准(这是因为美国政府希望符合美国标准,而不是国际标准。所以微软的ISO-8859副本说" ANSI"在封面。而且由于当时微软并不习惯于标准,他们也没有意识到ANSI也发布了许多其他标准。所以他们提到了ISO-8859系列中的标准(以及他们发明的变体,因为他们在那些日子里并不真正理解标准)的封面上的名字," ANSI",它进入了微软用户文档,因此进入了用户社区。这是大约30年前的事,但你有时候仍然会听到这个名字。

答案 4 :(得分:12)

ASCII只定义了一个包含128个符号的7位代码页。 ANSI将此扩展为8位,并且符号128到255有几个不同的代码页。

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

Windows-1252再次基于ISO / IEC 8859-1,主要在128到159范围内的C1 control set范围内进行了一些修改.Wikipedia声称Windows-1252也称为ISO -8859-1,ISO和8859之间的第二个连字符。(难以置信!谁做的那样?!?)

答案 5 :(得分:3)

基本上“ANSI”是指Windows上的旧代码页。有关此主题,另请参阅an article by Raymond Chen。在大多数代码页中,前127个字符与ASCII相同,但是上面的字符有所不同。

但是,ANSI 自动表示CP1252或Latin1。

尽管如此,你应该简单地避免这些问题并使用Unicode。

答案 6 :(得分:2)

以防万一你的电脑不是西方电话" PC并且您不知道使用了哪个代码页,您可以查看此页面:National Language Support (NLS) API Reference

[Microsoft删除了此引用,将其从网络存档National Language Support (NLS) API Reference

中删除

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

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:\>

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

答案 9 :(得分:-4)

ANSI (又名Windows-1252 / WinLatin1)是拉丁字母的字符编码,与ISO-8859-1非常相似。 你可能想看看it at Wikipedia