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

Kev*_*edy 25 xml unicode utf-8 utf-16

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

Juk*_*ela 21

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

ISO 6429实际上等同于ECMA 48,它提到此代码也具有短名称SUB,并将其定义如下:"SUB用于代替已发现无效或错误的字符.SUB旨在通过自动方式引入."这反映了Ascii中此控制代码定义.

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

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


Han*_*ant 14

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

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


Joa*_*uer 7

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

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