我正在尝试处理一些包含在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
帮助程序。
有没有人见过这样的东西?
答案 0 :(得分:2)
嗯,这实际上比我想象的要容易。我曾尝试在nil
电话的末尾添加Iconv.iconv
无效。我没有尝试过的是在结果上调用join
。因此,最终的正确结果是
Iconv.iconv(to, from, text_to_transcode, nil).join