我的老师告诉我ASCII是8位字符编码方案。但是它仅针对0-127码进行定义,这意味着它可以适合7位。那么,难道说ASCII位实际上是7位代码吗?
当说ASCII完全是8位代码时,我们到底要说什么呢?
我的老师告诉我ASCII是8位字符编码方案。但是它仅针对0-127码进行定义,这意味着它可以适合7位。那么,难道说ASCII位实际上是7位代码吗?
当说ASCII完全是8位代码时,我们到底要说什么呢?
Answers:
ASCII确实最初被认为是7位代码。在8位字节无处不在之前,这已经做得很好,甚至在1990年代,您都可以找到一种软件,该软件假定它可以将文本的每个字节的8位用于其自身目的(“非8位纯净”)。如今,人们将其视为8位编码,其中字节0x80至0xFF没有定义的含义,但这是一个retcon。
有许多使用第8位的文本编码。它们可以分为与ASCII兼容和不与ASCII兼容,以及固定宽度或可变宽度。兼容ASCII的意思是,无论上下文如何,值从0x00到0x7F的单个字节都编码与ASCII中相同的字符。如果可以避免,您不希望与非ASCII兼容的文本编码有任何关系。期望ASCII的幼稚程序往往会以灾难性的,通常是破坏安全性的方式来误解它们。如今,它们已被弃用,例如(不幸的是)UTF-16例外,HTML5禁止在公共Web上使用它们。我不再谈论它们了。
固定宽度编码意味着听起来像:所有字符都使用相同数量的字节进行编码。为了与ASCII兼容,固定编码必须仅使用一个字节对所有字符进行编码,因此最多只能有256个字符。如今,最常见的此类编码是Windows-1252,它是ISO 8859-1的扩展。
如今,只有一种可变宽度的ASCII兼容编码值得一提,但这很重要:UTF-8,它将所有Unicode打包为ASCII兼容编码。如果可以管理,您真的想使用它。
最后要注意的是,“ ASCII”现在取自Unicode,而不是其原始标准(ANSI X3.4-1968)的实际定义,因为历史上ASCII 127个字符的表目有数十种变体,例如,标点符号可以用带重音的字母代替,以利于法语文本的传输。如今,所有这些变体都已过时,当人们说“ ASCII”时,它们表示值0x00至0x7F的字节对Unicode代码点U + 0000至U + 007F进行编码。仅当您发现自己编写技术标准时,这才可能对您很重要。
如果您对ASCII的历史及其之前的编码感兴趣,请从论文“字符编码的演变,1874-1968”(http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf),然后追逐它的参考文献(我很遗憾地说,其中许多参考文献都无法在线获得,即使访问大学图书馆也可能很难找到)。
原始ASCII表以7位编码,因此具有128个字符。
如今,大多数读者/编辑者都使用“扩展的” ASCII表(来自ISO 8859-1),该表以8位编码,并包含256个字符(包括Á,Ä,Œ,é,è以及其他对欧洲语言有用的字符)作为数学字形和其他符号)。
尽管UTF-8使用与基本ASCII表相同的编码(在两个代码中均0x41
表示A),但对于“ Latin Extended-A”块而言,它不共享相同的编码。有时会导致奇怪的字符出现在点菜或piñata之类的单词中。
当我们将ASCII称为7位代码时,最左边的位用作符号位,因此使用7位,我们最多可以写入127。这意味着-126至127,因为ASCII的最大阿am值为0至255。这可以是如果最后一位被视为符号位,则仅对7位的参数感到满意