当它有一些语法问题时,根本不加载XML文件有什么意义?今天我在加载定义了错误编码的文件时遇到了问题。它有UTF-16
个标头,但在UTF-8
中编码。我理解,如果它无法确定正确的编码,但它会抛出警告,文件被UTF-8
编码,所以它确实知道该怎么做......这是一个理论问题。无需提供任何示例或说出我尝试过的内容。我知道如何加载文件。只需将encoding="UTF-16"
更改为encoding="UTF-8"
...但为什么会出现这样的问题? UTF-8
和UTF-16
中的每个语法字符都完全相同... C#库甚至不关心......
答案 0 :(得分:5)
正如我从围绕XML设计时的讨论中回忆的那样,这种零容忍方法是XML设计者对HTML的哲学回应。在看到响应大量破碎的HTML而出现的令人难以置信的巴洛克式错误恢复时,XML的设计者决定强制要求任何错误都是致命的。
这当然对内容作者来说不方便,内容作者必须确保他们的文档格式正确,并且在必要时也是有效的。但通过这样做,他们允许XML库作者专注于仅按指定实现XML,而不是容纳破碎的XML,无论中断多小。总的来说,我认为这是一个非常聪明的举动,导致专注于精益,快速的图书馆,而不是臃肿,适应的。
答案 1 :(得分:1)
您的抱怨来自于编码信息实际上是多余的假设,并且有一种可靠的方法来检测任何给定文本的编码。那是错的。
任何进行编码检测的软件(通常是一个好的文本编辑器都可以在加载文件时执行)基本上是在猜测。这在以下情况下是可以接受的:
自动XML处理无法满足任何这些要求。
您基本上要求将数据丢失作为一项功能。已针对此明确设计了XML。
(如果您正确使用它们,您可能在C#库中发现了一个错误。)