You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML反序列化时特殊字符显示为�,如何解决该编码问题

XML反序列化特殊字符显示乱码(�)的解决方法

问题背景

我遇到了一个XML反序列化的乱码问题:手里的XML文件声明了UTF-8编码,但里面包含ö、ä这类特殊字符:

<?xml version="1.0" encoding="UTF-8"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<student name="Adnand"/>
<student name="özil"/>
<student name="ärnold"/>
</students>

我用下面的C#代码进行反序列化,过程没有报错,但结果里的特殊字符全部变成了�:

public void readXML(string path)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Students));
TextReader reader = new StreamReader(path);
object obj = deserializer.Deserialize(reader);
Students myStudents = (Students)obj;
}

尝试过修改编码类型但没效果,有没有可行的解决办法?

解决方案

亲测有效的解决方式是在初始化StreamReader时显式指定Encoding.Default,修改后的代码如下:

public void readXML(string path)
{
XmlSerializer deserializer = new XmlSerializer(typeof(Students));
TextReader reader = new StreamReader(path, Encoding.Default);
object obj = deserializer.Deserialize(reader);
Students myStudents = (Students)obj;
}

Encoding.Default会采用系统当前的ANSI编码,能正确识别并解析这些特殊字符,从而解决乱码问题。

内容的提问来源于stack exchange,提问作者Adnand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:58:06