Задать вопрос
pavlinux
@pavlinux

Dbmail: invalid byte sequence for encoding «UTF8»?

Sep  1 09:52:12 mail dbmail/lmtpd[25883]: Error:[sql] dbpgsql.c,db_query(+287): query failed [INSERT INTO dbmail_subjectfield (physmessage_id, subjectfield) VALUES (327605,'Хиты нед ели: Дет ский обу чающий п ланшет | Годовой запас пр езервати вов | Зеркало заднего виде + видеорег истратор | Турмалин овая маска д л<D1> ')] : [ERROR:  invalid byte sequence for encoding "UTF8": 0xd120#012HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".#012]

Конфиг:
Debian 6.0.7 x86_64
PostgreSQL  8.4.17
libgmime  2.2.25-27 // (вся ветка 2.2.x косячная, собственно всё из-за неё ) 
DBMail version 2.2.11
  • Вопрос задан
  • 5077 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
@ALyarskiy
Начиная с версии 3.1.11 всё должно работать:
Пофиксен баг с UTF8 заголовками
Добавлена валидация UTF8, некорректные последовательности удаляются

Коммит:
https://github.com/pjstevns/dbmail/commit/ada17afc...
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
pavlinux
@pavlinux Автор вопроса
Единственную аномалию которую заметил, то что параметры в поле Content-Type
написаны с переносом строки и кодировка в кавычках.

Content-Type: text/plain; 
              charset="windows-1251"
Ответ написан
Комментировать
@agmt
0xd020 действительно невозможно в UTF-8. Может, проблема таки в клиенте?
P.S. лучше бы представить приведённые цитаты в кодах, а не тексте, т.к. теряется важная составляющая (и только люди, которые знакомы с багом, смогут ответить).
Ответ написан
pavlinux
@pavlinux Автор вопроса
Перл вот такую гадость показывает:

echo "?windows-1251?B?0eHw7vEg7+Dw7uv/IPP35fLt7ukg5+Dv6PHoIMzg6erw7vHu9PI=?=" | \
perl -MMIME::Base64 -ne 'print decode_base64($_)' | \
iconv -f cp1251 -t utf-8;
В)ЭЈ
    5ЫќAСброс пароля учетной записи Майкрософт


Откуда взялось 0xd020, непонятно.

echo "?windows-1251?B?0eHw7vEg7+Dw7uv/IPP35fLt7ukg5+Dv6PHoIMzg6erw7vHu9PI=?=" | perl -MMIME::Base64 -ne 'print decode_base64($_)' | od -x 
0000000 29c2 a3dd 350b 9ddb d141 f0e1 f1ee ef20
0000020 f0e0 ebee 20ff f7f3 f2e5 eeed 20e9 e0e7
0000040 e8ef e8f1 cc20 e9e0 f0ea f1ee f4ee 00f2
0000057
Ответ написан
Комментировать
pavlinux
@pavlinux Автор вопроса
# vi /etc/postgresql/8.4/main/postgresql.conf

client_encoding = latin1

:wq

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы