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

Excel中UTF-8字符串被错误解码为UTF-16,如何修正特殊字符显示?

修复UTF-8被错误解码导致的乱码问题

你遇到的是典型的编码误映射问题——原始UTF-8字节被错误地以单字节编码(比如Latin-1/ISO-8859-1)解码成了Unicode字符串(从示例看更符合这类场景,而非你描述的UTF-16解码错误)。不需要逐个替换字符,用两步编码解码就能批量修复:

  • 第一步:将错误的字符串用**Latin-1(ISO-8859-1)**编码为字节流。Latin-1会把每个U+0000到U+00FF的Unicode字符直接映射为对应的单字节(0x00到0xFF),刚好还原出原始的UTF-8字节。
  • 第二步:将这个字节流用UTF-8解码,即可得到正确的字符串。

代码示例

以你提到的乱码ó(实际应为ó)为例:

s = "ó"
fixed_str = s.encode("latin-1").decode("utf-8")
print(fixed_str)  # 输出:ó

为什么你之前的方法无效

你尝试用UTF-16编码再解码的思路方向错误:乱码字符串本身已经是错误解码后的Unicode,用UTF-16编码会生成16位的字节流,这和原始的UTF-8单字节流完全无关,自然无法用UTF-8解码成功。

特殊场景处理

如果遇到个别字符修复后仍有问题,可以尝试用Windows-1252替代latin-1——它是Latin-1的超集,覆盖了更多特殊字符,部分场景下错误解码用的是该编码:

fixed_str = s.encode("windows-1252").decode("utf-8")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:35:20