Маленькая победа над Movable Type

| Комментариев: 4

Реанимировав в прошлом месяце блог, я решил заодно перенести его на последнюю версию Movable Type, параллельно сменив кодировку с Windows -1251 на UTF-8 (не то, чтобы для этого была какая-то серьезная причина, просто так захотелось). Прошло все не без проблем, в частности, не удалось сохранить комментарии. И когда все уже было установлено и настроено, выявилась еще одна проблема: приходящие на почту сообщения о новых комментариях оказывались нечитаемыми: вместо символов кириллицы в них отображались непонятные закорючки. Примерно такие:
mail-screen.png

На официальном сайте Six Apart (компании-разработчика Movable Type), а также на разных форумах и блогах рецепт исправления предлагался один: добавить в файл конфигурации директиву MailEncoding UTF-8. Однако этот способ не сработал, причем, судя все по тем же вопросам на форумах, не работал он не только у меня (хотя кому-то и помогал).

В поиках решения пришлось углубиться в японский Интернет (Movable Type мегапопулярен в Японии, а с недавнего времени и его разработкой и развитием занимается японская компания). Решение нашлось довольно быстро, и, к счастью, оказалось достаточно простым, чтобы я смог применить его, не зная ни японского языка, ни perl.

Для устранения проблемы с кодировкой почты (которая по умолчанию идет в формате ISO-8995-1) пришлось внести небольшие изменения в файл EncWords.pm, расположенный в каталоге \extlib\MIME.

Итак, рецепт:

  1. найдите в файле EncWords.pm строку encode_base64($str, ''); (она примерно 176-я по счету);
  2. замените ее строкой encode_base64(encode_utf8($str), ''); (здесь мне нечего добавить, но напишу это примечание, чтобы не было сомнений в том, что точка с запятой в конце строки относятся к коду, а не просто обозначают конец этого пункта списка);
  3. парой строк выше вставьте следующую строку:
    use Encode qw(encode_utf8);
    Я совсем не знаю perl, поэтому вставил ее сначала в самом начале файла — не сработало. Потом перенес поближе к 176-й строке и вставил сразу после комментария # Private: used by encode_mimeword() to encode "B" encoding примерно двумя строками выше.

Теперь можно добавлять в файл mt-config.cgi директиву MailEncoding UTF-8 (вместо UTF-8 можно указать другую нужную кодировку, например, Windows-1251), и комментарии будут читабельными.

Комментариев: 4

Спасибо, помогло ! )

Решение работает, спасибо!

Но оно работает только для тела письма. А как вылечить еще и поле темы письма?

Комментировать


Введите изображённые на картинке символы.

  • Подписаться на обновленияЧитать Twitter

Об этой записи

Сообщение опубликовано 04.11.2010 00:29. Автор — Антон Пищур.

Следующая запись — «Неверный запрос» при отправке комментариев в Movable Type

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.

div class=/div