【发布时间】:2012-06-02 09:09:49
【问题描述】:
我正在尝试解析传入的电子邮件并希望将正文作为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(但是似乎没有一个真正起作用或被令人难以置信的过时)。这应该是可能的,感觉好像答案就在我眼前,希望这里的人能够对我的情况有所了解并告诉我我做错了什么。
- 使用 ruby 1.9.3
【问题讨论】:
标签: ruby utf-8 mime quoted-printable