什么是ANSI编码格式?它是系统默认格式吗? 它和ASCII有什么不同?
当前回答
严格地说,没有所谓的ANSI编码。通俗地说,术语ANSI用于几种不同的编码:
ISO 8859 - 1 Windows CP1252 Windows机器上的当前系统编码(用Win32 API术语)。
其他回答
ANSI encoding is a slightly generic term used to refer to the standard code page on a system, usually Windows. It is more properly referred to as Windows-1252 on Western/U.S. systems. (It can represent certain other Windows code pages on other systems.) This is essentially an extension of the ASCII character set in that it includes all the ASCII characters with an additional 128 character codes. This difference is due to the fact that "ANSI" encoding is 8-bit rather than 7-bit as ASCII is (ASCII is almost always encoded nowadays as 8-bit bytes with the MSB set to 0). See the article for an explanation of why this encoding is usually referred to as ANSI.
“ANSI”这个名字是不恰当的,因为它不对应任何实际的ANSI标准,但这个名字一直存在。ANSI与UTF-8不同。
我记得当“ANSI”文本引用伪VT-100转义码通过ANSI在DOS中可用。SYS驱动程序来改变流文本....可能不是你指的,但如果是,请参阅http://en.wikipedia.org/wiki/ANSI_escape_code
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之间有第二个连字符。(难以置信!谁会做这种事?!?)
基本上“ANSI”指的是Windows上的遗留代码页。请参阅Raymond Chen关于此主题的文章:
这是因为Windows代码页1252最初是基于ANSI草案,后来成为ISO标准8859-1。
在大多数代码页中,前127个字符与ASCII相同,但上面的字符有所不同。
然而,ANSI并不自动表示CP1252或拉丁1。
尽管有很多困惑,但您现在应该简单地避免这些问题,并使用Unicode。
当使用单字节字符时,ASCII格式定义了前127个字符。128-255的扩展字符由各种ANSI代码页定义,以允许对其他语言的有限支持。为了理解ANSI编码的字符串,您需要知道它使用哪个代码页。
推荐文章
- 将Unicode文本写入文本文件?
- PHP DOMDocument loadHTML没有正确编码UTF-8
- 如何检查Python中的字符串是否是ASCII?
- 什么是ANSI格式?
- 如何在Bash中回显4位Unicode字符?
- 如何从字符串中剥离非ascii字符?(c#)
- 什么是垂直标签?
- 如何转换字符串和从UTF8字节数组在Java
- 将非ascii字符替换为单个空格
- 有一个上下颠倒的插入符号吗?
- 检测编码并使所有内容都为UTF-8
- 导致UnicodeDecodeError: 'utf-8' codec不能解码字节
- 在my.cnf中修改MySQL默认字符集为UTF-8 ?
- Content-type: application/json;Charset =utf-8"真的意味着什么?
- Unicode, UTF, ASCII, ANSI格式的差异