为什么没有为ascii值定义的符号从127到159

时间:2014-07-07 09:13:00

标签: html html5 character-encoding ascii ascii-art

我在an ASCII chart中寻找×并注意到从127到159,图表中没有定义符号(not defined in HTML 4 standard),尽管此后的代码在图表中有符号

在此数字范围内是否存在没有符号的特定技术原因?

3 个答案:

答案 0 :(得分:2)

此数字HTML编码遵循Latin1 Encoding,而Latin1在该范围内没有字符。因此,HTML没有该范围内的字符。没有进一步的"技术"理由是必要的。

这些代码未在 Latin1 中定义可见字符的原因更为复杂。该空间保留给C1 control codes0x800x9F),这是(非常)旧的终端格式化命令。它们的目的与C0 control codes0x000x1F)类似,后者也用于定义函数,例如"垂直标签"," Ack&# 34;和" Bell",已被弃用并停止使用,但Tab,回车和换行(可能还有退格)除外。

答案 1 :(得分:2)

虽然尚不清楚这是否是ASCII设计人员的初衷,但将ASCII限制为127或更少(十进制)的值已允许创建较新的字符编码,如UTF-8和Unicode,可支持上百万字符,同时还可以与ASCII向后兼容。

这些较新的编码方案是通过可变宽度来实现的:如果字节的第一位为'0',则将该字节视为ASCII字符。如果第一个字节为“ 1”,则将其视为多字节字符的一部分。 here中提供了有关UTF-8的更多信息。

因此,符合UTF-8的软件可以处理最初以ASCII编码的文本。同样,这种向后兼容性适用于设计为与ASCII向后兼容的编码。当然还有向后兼容的其他编码方案。

更多字符非常重要,因为即使8位(256个字符)或一个完整的字节也不足以表示人们感兴趣的所有语言中的所有字符,尤其是因为中文和日语等语言有成千上万种字符。甚至2个字节也不能覆盖中文和日语等语言。

向后兼容的编码使传统软件和兼容UTF-8的新软件都可以处理相同的文本数据,因为新软件和传统软件将ASCII字符视为相同,并且不会将ASCII字符与其他字符混用字符,反之亦然。

多字节编码方案的另一个优点是,相对于每个字符分配固定数量(例如3或4字节)的方法(您需要支持日语和中文,因为2字节是不够的),固定编码后,您将大大增加简单文本(意味着每个字符可以是ASCII或1个字节的文本)的存储需求,因为现在每个字符为3或4字节,而不是1。

固定宽度的编码方案(例如,每个字符3或4字节)也不会与ASCII向后兼容。

因此,不要批评ASCII没有使用所有8位比特,或者不支持最多256个字符,而应该赞扬它的可扩展性,这样我们就拥有了精灵emoji ‍♂️。是的,很多表情符号都是UTF-8和Unicode官方字符-但是设备和字体需要为其创建图形,这与实际将表情符号创建为官方字符相去甚远,因此Mac上无法使用像Llamas这样的新表情符号( ),但可在iOS上使用。

答案 2 :(得分:1)

没有Ascii值大于127(十进制),Ascii值127代表一个不可见的控制字符。 Ascii定义了一个字符代码,用于为0和127的代码编号赋予意义,就是这样。人们通常所说的“8位Ascii”只不过是某些 8位字符代码,它们具有与Ascii相同的0到127号代码分配。

您链接到的“ASCII图表”页面有几个错误,包括错误使用术语“ASCII”。它不应该用作参考。