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

Unity中JsonConvert.DeserializeObject反序列化重音字符乱码的解决方法

解决Unity中Newtonsoft.Json解析重音字符乱码问题

核心原因

问题出在File.ReadAllText(fileName)的默认编码逻辑上:Windows环境下该方法默认用ANSI编码读取文件,但你的JSON文件实际是UTF-8编码(记事本能正常识别就是证明),编码不匹配直接导致重音字符解析乱码。

具体修复方案

方案1:指定UTF-8编码读取文件

直接修改读取代码,明确指定用UTF-8编码(兼容带BOM的UTF-8文件):

var jsonContent = File.ReadAllText(fileName, Encoding.UTF8);
var humans = JsonConvert.DeserializeObject<List<Human>>(jsonContent);

方案2:统一JSON文件编码(可选)

如果方案1生效后仍有异常,可先规范JSON文件的编码:

  • 用记事本打开JSON文件,点击「文件」→「另存为」
  • 在「编码」下拉框选择「UTF-8」(避开「UTF-8 BOM」选项),覆盖保存文件
  • 再用方案1的代码读取即可

方案3:全局配置Newtonsoft.Json编码规则(进阶)

如果需要统一处理所有非ASCII字符,可在反序列化时添加编码设置:

var settings = new JsonSerializerSettings
{
    StringEscapeHandling = StringEscapeHandling.EscapeNonAscii
};
var humans = JsonConvert.DeserializeObject<List<Human>>(jsonContent, settings);

该设置会自动转义非ASCII字符,从根源避免编码兼容问题。

验证方式

解析完成后,将itemLabel的值打印到Unity控制台,或在UI组件中显示,确认é、ü等重音字符是否正常渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:01:29