【发布时间】:2011-09-03 20:18:29
【问题描述】:
我正在使用包含名称的 XML 数据库。不幸的是,我住在捷克共和国,捷克名字中有很多捷克字母。这些字母是ě š č ř ž ý á í é ú ů。每当数据库包含这些字母之一时,应用程序在解析数据期间崩溃。
调试器显示错误:“给定编码中的字符无效。第 4 行。位置 15”。
我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<Players>
<Player>
<Name>Karel Čubera</Name>
</Player>
<Player>
<Name>Jiri Vontubas</Name>
</Player>
<Player>
<Name>Jan Vernovsky</Name>
</Player>
</Players>
我的应用:
static void Main(string[] args)
{
XDocument xmlDoc = XDocument.Load("C://Database.xml");
var XMLdata = from singlePlayer in xmlDoc.Descendants("Player")
select new
{
Name = singlePlayer.Element("Name").Value,
};
foreach (var singlePlayer in XMLdata)
{
Console.WriteLine("Player name: " + singlePlayer.Name);
Console.WriteLine();
}
Console.Read();
}
Linq to XML 甚至可以读取这些符号吗?我在 Windows 窗体应用程序中遇到了同样的问题。如果没有它们,我真的需要这些字母,这很糟糕。 :) 在此先感谢
【问题讨论】:
-
保存在磁盘上的 XML 文件是否实际上以 UTF-8 编码?我的第一个猜测是它实际上是以其他一些编码保存的,并且 UTF-8 解析器在它为非 ASCII 字符找到的字节序列处出错。 (UTF-8 和 ASCII 的字节序列重叠且仅适用于 U+0000 到 U+007F。)
-
当然不是 xD 我觉得很愚蠢,现在它是 ANSI,它现在可以工作了,非常感谢
标签: c# crash linq-to-xml