Character encoding 什么是ANSI格式?

Character encoding 什么是ANSI格式?,character-encoding,ascii,ansi,codepages,Character Encoding,Ascii,Ansi,Codepages,什么是ANSI编码格式?它是系统默认格式吗? 它与ASCII有什么不同?ANSI(又称Windows-1252/WinLatin1)是拉丁字母表的字符编码,与ASCII非常相似。 你可能想看一看 使用单字节字符时,ASCII格式定义前127个字符。128-255之间的扩展字符由各种ANSI代码页定义,以允许对其他语言的有限支持。为了理解ANSI编码的字符串,您需要知道它使用的是哪个代码页。只定义了一个包含128个符号的7位代码页。ANSI将其扩展到8位,128到255符号有几个不同的代码页 AN

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

ANSI(又称Windows-1252/WinLatin1)是拉丁字母表的字符编码,与ASCII非常相似。
你可能想看一看

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

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

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


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

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


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

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

  • ISO 8859-1
  • Windows CP1252
  • Windows计算机上的当前系统编码(用Win32 API术语)
  • 基本上,“ANSI”是指Windows上的遗留代码页。有关此主题,另请参见:

    其根源在于Windows代码页1252最初基于ANSI草案,该草案成为ISO标准8859-1

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

    但是,ANSI并不自动表示CP1252或拉丁语1


    尽管存在所有困惑,但您现在应该避免此类问题,并使用Unicode。

    我记得当“ANSI”文本通过ANSI.SYS驱动程序引用DOS中可用的伪VT-100转义码来改变流式文本流时。。。。可能不是您所指的,但如果从技术上看,ANSI应该与US-ASCII相同。它指的是ANSI X3.4标准,这只是该组织批准的ASCII版本。ASCII/ANSI中未定义使用顶级位集字符,因为它是一个7位字符集

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


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

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

    如果你的电脑不是“西方”电脑,你不知道使用的是哪一个代码页,你可以看看这个页面:

    [Microsoft已删除此引用,请将其从web archive中删除。]

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

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

    不是每个人都使用CP1252;这在很大程度上取决于地区。我知道ANSI是代码页437,而不是Windows代码页1252。当ANSI提到为公告板系统创建的图形时,我可以很好地保证这一点。“ANSI”显然没有提到任何ANSI标准,但事实上,当你保存文件时,你可以在记事本中选择“Encoding:ANSI”。实际问题是:“这意味着什么?”这个答案是迄今为止最好的。在我的例子中,ANSI指的是