我正在尝试处理一些包含在 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.iconv
helper 方法,它nil
为你添加了。我检查了 TMail 源,它使用了相同的Iconv.iconv
帮助程序。
有没有人见过这样的事情?