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

Mac邮件归档App遇Windows邮件乱码,求识别原编码修复Mojibake

邮件归档乱码的编码识别问题

我开发的macOS应用支持从邮件客户端及IMAP账户归档邮件。用户通过Mail归档Windows用户发来的邮件后,应用直接读取硬盘数据时出现乱码,已识别部分字符对应关系:

  • ‰ → ä
  • ¸ → ü

我针对ö、ä、ü、ß制作编码对照表,但未匹配到对应数据。测试代码如下:

dim theLeft as string = "ö  ä  ü  ß"
for currentEncoding as integer = 0 to Encodings.Count - 1
  
  dim EncodingInternetName as String = Encodings.Item(currentEncoding).internetName
  
  if EncodingInternetName.IndexOf("iso") = -1 and EncodingInternetName.IndexOf("windows") = -1 then Continue
  dim newString as string = DefineEncoding(theLeft, Encodings.Item(currentEncoding))  '<---convert
  newString = ConvertEncoding(newString, Encodings.UTF8)
  Result.Add(EncodingInternetName + " " + newString)
  
next

结论与验证建议

这种乱码是典型的编码二次错误转换导致的,对应原编码为Windows-1252(CP1252)——这是Windows系统默认的邮件文本编码之一。

具体逻辑:原始Windows邮件中的特殊字符(如ä、ü)以Windows-1252编码存储,Mac端读取时错误将其当作UTF-8解码,后续又进行了一次编码转换,最终出现你看到的乱码。

可以调整测试逻辑反向验证:

// 以乱码"‰"为例,反向转换还原原始字符
dim garbledString as string = "‰"
// 将乱码按UTF-8解码后转成Windows-1252,即可得到"ä"
dim originalChar as string = ConvertEncoding(DefineEncoding(garbledString, Encodings.UTF8), Encodings.Windows1252)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:25:43