当使用 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 方法都会正确解析数据并不报错。

C# Encoding.UTF8.GetString 后的字符串解析问题:解析XML数据时如何避免错误

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

免费AI点我,无需注册和登录