XmlDocument误读UTF-8 'e-acute'的性格

本文关键字:e-acute XmlDocument 误读 UTF-8 | 更新日期: 2023-09-27 18:17:52

我正在阅读一个包含é (e急性)字符的XML文档。该文件已保存为UTF-8,我已经确认该字符是UTF-8与二进制文件阅读器(它是c3 + a9)。然而,经过处理后,字符变成了一个三字节的混乱(c3 + 83 + c2)。

我的猜测是。net试图将字符转换为UTF-16(这是我最好的猜测),或者将字符拆分为一个单字节字符和一个双字节UTF-8字符。

我像这样加载文档:

XmlDocuments document = new XmlDocuments();
document.Load("z:''source.xml");

我应该如何加载这个?我应该通过utf -8编码的流来阅读这个吗?


[编辑]

我忘了说我正在加载的文档声明自己为UTF-8。

<?xml version="1.0" encoding="utf-8"?>

XmlDocument误读UTF-8 'e-acute'的性格

é用UTF-8编码为C3 A9。这两个字节在Windows-1252代码页(又名ANSI代码页或。net中的Encoding.Default)中被解释为é。用UTF-8重新编码这些会得到C3 83 C2 A9,它匹配"三字节混乱"的前三个字节。似乎某些代码在某处执行Windows-1252字节->系统。字符串字符-> UTF-8字节转换。

我从未见过。net使用错误的编码,当它在XML声明中明确指定(XmlDocument.Load应该"刚刚工作"),所以我怀疑你的代码中有一个错误。

你如何确定它加载不正确?一旦它被加载到。net中,你会看到字符串,而不是字节,所以对我来说,你报告的是一个不正确的字节序列,而不是一个不正确的字符序列,这似乎很奇怪。