Xml 对包含U+;001A

Xml 对包含U+;001A,xml,unicode,Xml,Unicode,我有一个XML文档,它是从人们从各种地方复制/粘贴的一些内容生成的(不过主要是Word文档) 看起来是这样的: <?xml version="1.0" encoding="UTF-8"?> <response> <data> <![CDATA[ (whatever was pasted) ]]></data> </response> 我一直使用UTF-8或iso-885

我有一个XML文档,它是从人们从各种地方复制/粘贴的一些内容生成的(不过主要是Word文档)

看起来是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <data> <![CDATA[
         (whatever was pasted)
    ]]></data>        
</response>

我一直使用
UTF-8
iso-8859-1
的编码,但现在有人去复制/粘贴unicode字符(
0x1a
),我找不到可以接受它的编码。我把XML文件放入的所有东西(例如Firefox、InternetExplorer、XMLSpy)都说它是无效的,不管使用哪种编码


我是否可以使用一种编码来防止文件掉落,或者我是否需要开始逐个删除所有这些字符?

U+001A在XML文档中不是有效字符。根据,字符的有效范围为:


U+001A不是XML文档中的有效字符。根据,字符的有效范围为:


预处理原始数据,对XML文档不支持的Unicode字符进行编码。例如,使用HTML字符编码:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <data> <![CDATA[This is &#x1a; a test.]]></data>        
</response>


读回时,您必须对数据进行后处理,以将HTML编码转换回正确的Unicode字符。

预处理原始数据,对XML文档不支持的Unicode字符进行编码。例如,使用HTML字符编码:

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <data> <![CDATA[This is &#x1a; a test.]]></data>        
</response>


读回时,您必须对数据进行后处理,以将HTML编码转换回正确的Unicode字符。

字符U+001A位于C0控制区域中,这在XML中通常是禁止的(包括U+001A)。不可能有人是故意进入的。相反,它是由软件生成的,可能是在执行字符代码转换和检测格式错误的数据(例如,在源编码中没有定义含义的字节)时生成的。U+001A(替换)字符用于此用途;看我的

如果您无法跟踪并修复生成U+001A的转换(或其他过程),我建议您将其替换为U+FFFD替换字符。在某种意义上,它是U+001A的Unicode等价物。(后者当然也是Unicode的,但在许多情况下是不允许的。)然而,它有一个可见的字形,尽管字形只存在于少数字体中;有关更多信息,请查看


这里的要点是,将U+001A更改为U+FFFD可以使数据在XML中被接受,并且仍然保留有关字符级数据错误的信息。

字符U+001A位于C0控制区域,这在XML中是大部分禁止的(包括U+001A)。不可能有人是故意进入的。相反,它是由软件生成的,可能是在执行字符代码转换和检测格式错误的数据(例如,在源编码中没有定义含义的字节)时生成的。U+001A(替换)字符用于此用途;看我的

如果您无法跟踪并修复生成U+001A的转换(或其他过程),我建议您将其替换为U+FFFD替换字符。在某种意义上,它是U+001A的Unicode等价物。(后者当然也是Unicode的,但在许多情况下是不允许的。)然而,它有一个可见的字形,尽管字形只存在于少数字体中;有关更多信息,请查看


这里的要点是,将U+001A更改为U+FFFD可以使数据在XML中被接受,并且仍然保留有关字符级数据错误的信息。

这不是我希望听到的,但谢谢。看来另一件“肯定很快就能解决”的事情将变成又一个漫长的日子。这不是我希望听到的,但谢谢。看来另一件“肯定很快就能解决”的事情将变成又一个漫长的日子。