如何阻止TMail删除希伯来邮件的最后一个字母?

时间:2010-12-15 17:35:48

标签: ruby encoding hebrew iconv

我正在尝试处理一些包含在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列表中找到了this issue,它描述了同样的问题。最后一句话如下:

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

这与Ruby Iconv文档(我copied to this Gist)一致,强调了在输入结尾添加nil的重要性。

我的代码中没有使用Iconv的Array或块版本;我总是使用Iconv.iconv辅助方法,为您添加nil。我检查了TMail源代码,它使用了相同的Iconv.iconv帮助程序。

有没有人见过这样的东西?

1 个答案:

答案 0 :(得分:2)

嗯,这实际上比我想象的要容易。我曾尝试在nil电话的末尾添加Iconv.iconv无效。我没有尝试过的是在结果上调用join。因此,最终的正确结果是

Iconv.iconv(to, from, text_to_transcode, nil).join