Как мне предотвратить, чтобы TMail отбрасывал последние буквы писем на иврите? - PullRequest
1 голос
/ 15 декабря 2010

Я пытаюсь обработать некоторые входящие электронные письма, содержащие ивритские символы, закодированные в 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.

Кто-нибудь видел что-нибудь подобное?

1 Ответ

2 голосов
/ 15 декабря 2010

Ну, это было на самом деле проще, чем я думал.Я пытался добавить nil к концу моих Iconv.iconv звонков, но безрезультатно.То, что я не пробовал, звонило join на результат.Таким образом, окончательный правильный результат -

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