是什么原因导致我的XML崩溃?

时间:2009-06-24 12:29:38

标签: xml encoding utf-8

我有以下XML代码。

<firstname>
 <default length="6">Örwin</default>
 <short>Örwin</short>
 <shorter>Örwin</shorter>
 <shortest>�.</shortest>
</firstname>

为什么“最短”节点的内容会中断?它应该是一个简单的“Ö”而不是繁琐的 。 XML是UTF-8编码的,处理该节点输出的函数也写入“短”和“短”的内容。 “Ö”清晰可见的地方。

2 个答案:

答案 0 :(得分:17)

我的猜测是XML不是正确 UTF-8编码的。请在原始文件中的<shortest>元素中显示 bytes ...我怀疑你会发现它们不是有效编码的字符。如果您可以显示一个简短但完整的程序,该程序从有效输入生成此XML,那将非常有用。 (最好也说哪个平台:)

编辑:这个文件正在发生一些非常奇怪的事情。以下是“较短”和“最短”值的十六进制值:

更短:C3 96 72 77 69 63

最短:EF BF BD 2E

现在“C3 96”是U + 00D6的有效UTF-8编码,它是“带有分音符的拉丁大写字母O”。

然而,EF BF BD是U + FFFD的UTF-8编码,它是“替换字符” - 绝对你想要的。 (2E只是ASCII点。)

所以,这实际上是有效的UTF-8 - 但它不包含你想要的字符。同样,您应该检查创建文件的内容......

答案 1 :(得分:-3)

XML解析标记内的元素,因为任何元素都可以包含嵌套元素。因此,你的“ö”可能会破坏解析。

将您的数据放入CDATA标记中,例如:http://www.w3schools.com/XML/xml_cdata.asp

相关问题