十六进制0X19是无效字符

时间:2009-08-24 23:54:41

标签: xml

SO,

我正在使用XMLWriter根据数据集中的值构建XML字符串。

根据我指定的设置和条件正确构建xml字符串。

如果数据集中有超过1000条记录,当我尝试构建xml字符串时,我收到上述错误。十六进制0X19是无效字符

我如何通过这个。我花了大约6个小时试图搞清楚。

请帮忙

4 个答案:

答案 0 :(得分:13)

很简单,无论你如何标记,你都不允许在XML文档中使用该字符。引用spec

  

Char :: =#x9 | #xA | #xD |   [#x20-#xD7FF] | [#xE000-#xFFFD] |   [#x10000-#x10FFFF]

粗略翻译,这意味着在0x20之前,你只允许标签(0x09),换行符(0x0a)和回车符(0x0d)。

克服此类问题的常用方法是使用其他嵌入式编码,例如base64

答案 1 :(得分:1)

Hex 0x19是ASCII sequence中的控制代码 - 它是媒体结束(EM)。我不确定它是如何进入你的数据流的。如果要将需要多个字节的内容编码为UTF-8,然后将其视为单字节字符集或其他类似的编码/解码序列,则可能会看到UTF-8序列的第二个字节。

您是否从一个字符集转码到另一个字符集?什么是输入和输出编码?

答案 2 :(得分:-1)

尝试使用0x19:)

十六进制(基数16)使用16个符号,即0到9和A B C D E F(或a到f,表示10到15)

0x只是编程语言(如C)和shell

中数字常量的前缀

答案 3 :(得分:-1)

我发现XML标记和/或属性名称中的无效字符会出现类似的错误。例如,如果在手动构建xml时没有包含空格,

 <tagNameattributeName="attributeValue">

会对预期的

产生错误
 <tagName attributeName="attributeValue">

可能值得一看。