ASCII码是7位还是8位?
我的老师告诉我,ASCII是8位字符编码scheme。 但是它只被定义为0-127码,这意味着它可以适合7位。 那么难道说ASCII位实际上是7位代码吗?
当说ASCII是8位代码的时候,我们说什么意思呢?
ASCII确实最初构思为7位代码。 这在8位字节变得无处不在的情况下完成了,甚至到了20世纪90年代,你可以find软件假设它可以使用每个字节的第8位作为自己的目的(“不是8位清理”)。 现在人们认为它是一个8位编码,字节0x80到0xFF没有定义的意思,但这是一个retcon 。
有几十个使用第8位的文本编码; 它们可以分类为ASCII兼容或不固定宽度或可变宽度。 与ASCII兼容意味着无论上下文如何,具有从0x00到0x7F的值的单个字节对与在ASCII中相同的字符进行编码。 如果可以避免的话,您不希望与非ASCII兼容的文本编码有任何关系; 期待ASCII的幼稚程序往往会把它们误解为灾难性的,往往是破坏性的时尚。 如今它们已经被弃用了,例如,HTML5禁止在公共Web上使用它,而UTF-16是个不幸的例外。 我不会再谈论他们了。
固定宽度的编码意味着它听起来像:所有字符都使用相同数量的字节进行编码。 为了与ASCII兼容,固定编码的编码器只能使用一个字节对其所有字符进行编码,因此不能超过256个字符。 目前最常见的编码是Windows-1252 , ISO 8859-1的扩展。
目前只有一种值得了解的可变宽度的ASCII兼容编码,但它是非常重要的: UTF-8将所有的Unicode编码为ASCII兼容的编码。 如果你可以pipe理它,你真的想要使用它。
作为最后一点,现在“ASCII”采用Unicode的实际定义,而不是其原始标准(ANSI X3.4-1968),因为历史上在ASCII 127字符的曲目中有几十个变体 – 例如,一些标点符号可以用重音字母代替,以方便传送法文文本。 现在,所有这些变体都已经过时了,当人们说“ASCII”时,它们表示0x00到0x7F的字节对Unicode码点U + 0000到U + 007F进行编码。 如果你发现自己写技术标准,这可能只对你很重要。
如果您对ASCII历史和其之前的编码感兴趣,可以从文章“字符代码的演变,1874-1968”(samizdat copy at http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ),然后追查其参考资料(其中许多资料在网上无法find,即使访问大学图书馆也很难find,我很遗憾地说)。
在Linux上, man ascii
说:
ASCII是美国信息交换标准代码。 这是一个7位的代码。
原始的ASCII表格被编码为7位,因此它有128个字符。
现在大多数阅读器/编辑器都使用一个“扩展的”ASCII表(来自ISO 8859-1 ),它被编码在8位上,并且享有256个字符(包括字母,数字, é和其他欧洲语言字符)作为math符号和其他符号)。
虽然UTF-8使用与基本ASCII表相同的编码(意思是两个代码中的0x41
是A ),但它不共享“Latin Extended-A”块的相同编码。 这有时会导致奇怪的人物出现在单词或piñata的单词中。
原始的ASCII代码提供128个不同的字符,编号为0到127.ASCII是7位的同义词,因为8位字节是公共存储元素,ASCII留出128个用于外部和其他符号的附加字符的空间。 但7位代码是在8位代码之前创build的。 ASCII代表美国信息交换标准代码在早期的互联网邮件系统中,它只支持7位ASCII码,这是因为它可以通过吸入系统执行程序和多媒体文件。 这些系统使用8位字节,然后必须使用MIME,UUcoding和BinHex等编码方法将其转换为7位格式。 这意味着8位已被转换为7位字符,这增加了额外的字节来编码它们。
- 如何将string拆分成Scala中的字符
- li:之前{content:“■”; }如何将这个特殊字符编码为电子邮件信纸中的一个恶棍?
- 与UTF-8字符的麻烦; 我看到的不是我所存储的
- SQL Server的默认字符编码
- Spring MVC中的UTF-8编码,FORMs问题
- 如果页面已经使用UTF-8,那么向HTML表单中添加accept-charset =“UTF-8”有什么好处?
- java.sql.SQLException:错误的string值:'\ xF0 \ x9F \ x91 \ xBD \ xF0 \ x9F …'
- 如何在cmd.exe默认Unicode Unicode字符集?
- 如何在PHP中replaceMicrosoft编码的引号