C# Encoding.UTF8.GetString 后的字符串解析问题:解析XML数据时如何避免错误
当使用 Encoding.UTF8.GetString 方法将字节数组转换为字符串时,如果字节数组中的数据以UTF-8编码格式表示的是XML数据,那么在转换后的字符串中会包含XML声明:''。
如果使用 doc.LoadXml 方法来解析这个字符串,解析过程会尝试根据XML声明来确定输入数据的编码格式。但是,如果转换后的字符串中不包含XML声明,doc.LoadXml 方法会默认使用UTF-8编码来解析数据。
为了让 doc.LoadXml 解析 Encoding.UTF8.GetString 之后的数据不报错,你可以手动向字符串中添加XML声明,然后再使用 doc.LoadXml 方法进行解析。示例代码如下:
string xmlString = Encoding.UTF8.GetString(byteArray);
xmlString = "<?xml version='1.0' encoding='utf-8'?>" + xmlString;
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
这样,不管转换后的字符串是否包含XML声明,doc.LoadXml 方法都会正确解析数据并不报错。

原文地址: http://www.cveoy.top/t/topic/L1x 著作权归作者所有。请勿转载和采集!