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

Swift中如何解码UTF-8编码乱码字符串得到正常可读文本

实现结论

该需求可以直接实现。你遇到的乱码是典型的编码错位问题:原本按UTF-8规则编码的字节流,被错误按照ISO-8859-1(即Latin-1,单字节西欧编码)解码生成了字符串,才会出现打印的异常字符,只要逆向还原编码流程再按UTF-8重新解码即可得到正确文本,逻辑和你参考的在线UTF-8解码工具完全一致。

修复逻辑
  • 将当前乱码字符串按ISO-8859-1编码规则转回原始字节序列,这一步得到的就是最初正确的UTF-8字节流
  • 将得到的字节序列按UTF-8规则重新解码为字符串,即可得到正常可读的目标文本
Swift 实现代码
import Foundation

// 待修复的乱码字符串
let corruptedText = "æç©ºè¦³å¯ã«æé©ãªã­ã±ã¼ã·ã§ã³"

// 第一步:按Latin-1编码还原原始UTF-8字节流
guard let rawUTF8Data = corruptedText.data(using: .isoLatin1, allowLossyConversion: false) else {
    fatalError("字节还原失败,请检查输入字符串格式")
}

// 第二步:按UTF-8解码得到正确文本
guard let correctText = String(data: rawUTF8Data, encoding: .utf8) else {
    fatalError("UTF-8解码失败,请检查字节流完整性")
}

// 输出验证
print(correctText)
// 控制台输出:星空観察に最適なロケーション
补充说明
  • 上述代码使用系统内置编码实现,不需要引入任何第三方依赖
  • 所有同类型「UTF-8字节流被误按Latin-1解码」产生的乱码,都可以用这套逻辑修复
  • 代码中allowLossyConversion参数设为false可以保证转换过程无信息丢失,避免修复结果出现异常字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:36:51