我正在尝试解析传入的电子邮件并希望将正文作为UTF-8
编码字符串存储在数据库中,但是我很快注意到并非所有电子邮件都在Content-Type
标题中发送字符集信息。在尝试了一些手动快速修复后String.force_encoding
,String.encode
我决定询问 SO 的友好人士。
老实说,我暗中希望String.encoding
自动返回字符串中使用的编码,但是它总是ASCII-8BIT
在我向它发送测试电子邮件后出现。当我作为一个选项实施时,我开始遇到这个问题,quoted-printable
如果我也得到了一些;charset=blabla
信息,这似乎可以工作。
input = input.gsub(/\r\n/, "\n").unpack("M*").first
if( charset )
return input.force_encoding(charset).encode("utf-8")
end
# This is obviously wrong as the string is not always ISO-8859-1 encoded:
return input.force_encoding("ISO-8859-1").encode("utf-8")
我一直在尝试我在互联网上找到的几种“解决方案”,但大多数似乎与文件读/写有关,并尝试了一些用于检测编码的 gem(但似乎没有一个真正能奏效或非常过时) . 这应该是可能的,感觉好像答案就在我眼前,希望这里的某个人能够对我的情况有所了解,并告诉我我做错了什么。
- 使用红宝石 1.9.3