Я пытаюсь обработать некоторые входящие электронные письма, содержащие ивритские символы, закодированные в 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 (которую я скопировал в эту таблицу ), в которой подчеркивается важность добавления nil
в конец ввода.
Нигде в моем коде я не использую Array
или блочные версии Iconv; Я всегда использую вспомогательный метод Iconv.iconv
, который добавляет для вас nil
. Я проверил источник TMail, и он использует тот же хелпер Iconv.iconv
.
Кто-нибудь видел что-нибудь подобное?