1

我正在尝试处理一些包含在 Windows-1255 中编码的希伯来语字符的传入电子邮件。

一些示例内容:

From: =?windows-1255...
Subject: =?windows-1255...
...

--Boundary_(ID_/GX/qGlPt4gpL8Dqc2zQQg)
Content-type: text/plain;   charset="windows-1255"
Content-transfer-encoding: quoted-printable
...

主题应该是“שאלה - ליאור צדוק”,而是“שאלה - ליאור צדו”。也就是说,最后一个字符被丢弃。名称也是如此From

我在 Iconv 列表中发现了这个问题,该列表描述了相同的问题。最后一句话如下:

In the original code snippet, there's a call to 
    iconv(the_iconv, NULL, NULL, &utf8, &bytes_written);
missing at the end. 

这与 Ruby Iconv 文档(我已将其复制到此 Gist)相吻合,该文档强调了添加nil到输入末尾的重要性。

我的代码中没有任何地方使用Array或阻止版本的 Iconv;我总是使用Iconv.iconvhelper 方法,它nil为你添加了。我检查了 TMail 源,它使用了相同的Iconv.iconv帮助程序。

有没有人见过这样的事情?

4

1 回答 1

2

嗯,这实际上比我想象的要容易。我曾尝试添加nil到我的Iconv.iconv通话结束无济于事。我没有尝试的是调用join结果。因此,最终正确的结果是

Iconv.iconv(to, from, text_to_transcode, nil).join
于 2010-12-15T18:13:26.157 回答