什么是Unicode U + 001A字符?阿卡0x1A

时间:2013-06-10 12:57:46

标签: xml unicode utf-8 utf-16

U + 001A字符经常出现在与字符编码有关的错误消息中。什么是U + 001A角色?

3 个答案:

答案 0 :(得分:21)

U + 001A在Unicode标准中定义为名称为SUBSTITUTE的控制字符,它属于以下标准的组:chapter 16标准:“有65个代码点留在与C0兼容的Unicode标准 ISO / IEC 2022框架中定义的C1和C1控制代码[...] Unicode标准规定了这些代码点的完整交换, 增加或减少它们的语义。控制代码的语义通常由使用它们的应用程序确定。但是,在没有的情况下 具体的应用程序用途,可根据ISO / IEC 6429:1992中规定的控制功能语义进行解释。“

ISO 6429实际上等同于ECMA 48,它提到此代码也具有短名称SUB,并将其定义如下:“SUB用于代替已发现的字符无效或错误。 SUB旨在 通过自动方式介绍。“这反映了definition of this control code in Ascii

因此,通常,U + 001A可以用于指示在所声称的字符数据中的字符级数据错误,例如字节的存在,其在应用的字符编码中没有解释。简而言之,它将意味着“糟糕的字符数据”,但更恰当地“错误的数据,当试图将数据解释为字符时”。但是,在Unicode中,U + FFFD REPLACEMENT CHARACTER更合适,因为它具有特定的Unicode语义。

由于问题已标记为“xml”,因此需要注意的是,在XML 1.0中,U + 001A被禁止,条款为2.2 Characters。请注意,注释“任何Unicode字符,不包括代理块,FFFE和FFFF”都具有误导性(但注释是非规范性的); U + 001A是Unicode字符,但它不是图形字符,并且其效果未在Unicode标准中定义。

答案 1 :(得分:14)

这是Ctrl + Z控制代码。它在Windows中有点特殊,它从DOS继承它,从CP / M继承它。它的遗留用途是作为文本结束标记,类似于在Unix中使用Ctrl + D.的方式。

在错误消息中查看它或用作失败编码转换的后备字符是非常不寻常的。我仔细检查代码并确保它不是U + 003F或U + FFFD,更典型的编码后备字符。或者只是你正在处理的特定代码的一个简单的怪癖。

答案 2 :(得分:7)

据我所知,U+001A是Unicode中的遗留字符。它存在的唯一原因是它已经在ASCII中被定义为substitute character(“......用于被认为无效或错误或无法表示的字符的位置在给定的设备上。“)。它有时也用于结束字符流(这可能是问题的常见来源)

在Unicode中,该函数由U+FFFD REPLACEMENT CHARACTER接管。