我有以下XML代码。
<firstname>
<default length="6">Örwin</default>
<short>Örwin</short>
<shorter>Örwin</shorter>
<shortest>�.</shortest>
</firstname>
为什么“最短”节点的内容会中断?它应该是一个简单的“Ö”而不是繁琐的 。 XML是UTF-8编码的,处理该节点输出的函数也写入“短”和“短”的内容。 “Ö”清晰可见的地方。
答案 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