XML解析器在文件进行到一半时突然阻塞了先前解析的拉丁字符

本文关键字:字符 丁字符 突然 文件 XML 一半 | 更新日期: 2023-09-27 18:29:11

我有一个用c#.net编写的XML加载器类,它应该读取XML文件,提取相关的数据位并将它们插入数据库。到目前为止都很普通。

然而,当我遇到一个包含拉丁字符的特定文件时,它的行为真的让我头疼。它加载了文件的大部分,然后突然在一个已经成功处理了很多次的非标准字符上抛出了一个非法字符错误。

DB异常:将表批量复制到[table]-->时出错System.Xml.XmlException:给定编码中的字符无效。线182078,位置47。

这是在角色ñ上抛出的,该角色已经在第506、999、1039行和其他许多行成功处理。我在十六进制编辑器中检查了它们是相同的实际字符,它们是:U+00F1ñc3 b1拉丁小写字母N WITH TILDE。

所以我不知道是什么导致它突然变得有问题。如果您将导致问题的片段复制到一个新文件中,并尝试从那里加载它,那么问题似乎会持续存在,而且片段是什么似乎无关紧要,所以它不太可能是转义字符。

我真的为这件事伤透了脑筋——非常感谢你的建议。

干杯,Matt

XML解析器在文件进行到一半时突然阻塞了先前解析的拉丁字符

注释中提到了这个问题的答案——这是使用不同文本编辑器进行多次复制和粘贴操作的结果,这可能会导致字符集发生更改。

尽可能始终使用原始数据!