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

ind*_*al8 4 xml encoding utf-8

我有以下XML代码.

<firstname>
 <default length="6">Örwin</default>
 <short>Örwin</short>
 <shorter>Örwin</shorter>
 <shortest>?.</shortest>
</firstname>
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 17

我的猜测是XML没有正确的 UTF-8编码.请出示字节的范围内<shortest>的原始文件中的元素...我怀疑你会发现他们不是一个有效编码的字符.如果您可以显示一个简短但完整的程序,该程序从有效输入生成此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 - 但它不包含你想要的字符.同样,你应该检查创建文件的内容......