日期:2014-05-18  浏览次数:20879 次

求教:读XML文件时,遇到编码的问题
<?xml version="1.0" encoding="UTF-16"?>
XML文件开始是这个样子的,encoding="UTF-16"

这样读入的时候,发生
There is no Unicode byte order mark. Cannot switch to Unicode.
System.Exception {System.Xml.XmlException}
这样一个异常。
XmlDocument xd = new XmlDocument();
xd.Load("Data.xml");

如果将UTF-16改为UTF-8的话,就不会出现这个问题,问什么呢?
如果是UTF-16的话,怎样消除这个问题?请指教!
谢谢!

------解决方案--------------------
因为你xml文件的保存编码就是utf-8的,硬性加入utf-16当然不对了。
------解决方案--------------------
我刚才看了看.net2005的xml字符编码
没有utf-16的
------解决方案--------------------
这个应该是声明头有点问题,
<?xml version="1.0" encoding="UTF-16"?> 
修改成
<?xml version="1.0" encoding="UTF-8"?> 

否着意义不是很大,如果非要utf-16,可以试一下通过System.Text命名空间下的相关Encoding来试一下进行格式转换,
读取数据时使用StreamReader,如果想通过XmlReader来读取可以通过指定编码来读取试一下。

由于声明编码不对,不过你的xml文件应该使用IE浏览器能打开的。