好的我有2封电子邮件,其中一个主题和正文都有日语和英语,另一个似乎是在iso-8859-1中
当我执行email.subject时,它在我的控制台和浏览器中都能正常显示,并且在我的数据库(mongodb)中保存得很好。所以我认为它正确地转换为utf-8。
问题是如何让text_body和html_body做同样的事情?
如果我尝试将email.html_part.decoded保存到数据库中,我会得到一个字符串而不是utf-8错误。此外,如果我执行email.html_part.decoded.force_encoding(“UTF-8”),我仍然会收到此错误。 如果我只使用email.html_part,它可以保存到数据库中,但在查看时看起来不正确。
像这样出现
Content-Type:text / plain; 字符集= ISO-8859-1 Content-Transfer-Encoding:quoted-printable 内容ID:
= 0D 检查!= 0D = 0D 致:joe@hotmail.com=0D 主题:阿拉斯加豪华游艇假期几乎节省了A32,000! = 0D 来自:canada@travel.co.uk=0D 日期:星期二,2011年5月10日05:39:24 -0500 = 0D = 0D = 0D = 0D = 0D = 0D = 0D
和日本人就这样出来了
Content-Type:text / plain; 字符集= ISO-2022-JP 内容传输编码:7位 内容ID:
来自:joe@hotmail.com 致:sales@domain.com 主题:($ B%Q%s $ r?)$ Y $ J $$!#(B)“我不会吃面包” 日期:2011年5月10日星期二21:13:55 +0000
通过动词动词形成否定词。例如,Pan o taberu($ B%Q%s $ r?)$ Y $ k!#(B)“我会吃面包”或“我吃面包”变成Pan o tabenai($ B%Q%s $ r?)$ Y $ J $$!#(B)“我不会吃面包”或“我不吃面包”。简单的否定形式实际上是i形容词(见下文)并且如此变化,例如, Pan o tabenakatta($ B%Q%s $ r?)$ Y $ J $ + $ C $?!#(B)“我没吃面包”。
我正在使用rails 3.0.7和ruby 1.9.2-p180
任何人都可以帮忙吗? 谢谢里克
答案 0 :(得分:2)
第一封邮件是'quoted-printable',您可以使用String#unpack
解压缩:
str = "=0D check!=0D =0D To: joe@hotmail.com=0D Subject: Save almost =A32,000 on a luxury Alaskan yacht holiday! =0D From: canada@travel.co.uk=0D Date: Tue, 10 May 2011 05:39:24 -0500=0D =0D =0D =0D =0D =0D =0D".unpack('M').first
=> "\r check!\r \r To: joe@hotmail.com\r Subject: Save almost \xA32,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"
您想将其声明为iso-8859-1并将其转换为utf-8:
str.force_encoding('iso-8859-1').encode('utf-8')
"\r check!\r \r To: joe@hotmail.com\r Subject: Save almost £2,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"
你可能必须对第二封邮件做同样的事情。