PGError: ERROR: неверная последовательность байтов для кодировки "UTF8 - PullRequest
6 голосов
/ 23 января 2011

При получении писем Rails от Cloudmailin я получаю следующее PGError:

PGError: ERROR: invalid byte sequence for encoding "UTF8": 0xbb HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". : INSERT INTO "comments" ("content") VALUES ('Reply with blah blah  ����������������������������������������������������� .....

Так что, кажется, довольно ясно, что в письмо попало несколько недопустимых символов UTF8, верно? Так что я попытался очистить это, но что-то все еще пробирается. Вот что у меня есть:

message_all_clean = params[:message]
Iconv.conv('UTF-8//IGNORE', 'UTF-8', message_all_clean)
message_plain_clean = params[:plain]
Iconv.conv('UTF-8//IGNORE', 'UTF-8', message_plain_clean)

@incoming_mail = IncomingMail.create(:message_all => Base64.encode64(message_all_clean), :message_plain => Base64.encode64(message_plain_clean))

Есть идеи, мысли или предложения? Спасибо

1 Ответ

8 голосов
/ 23 января 2011

Когда мы столкнулись с этой проблемой в Heroku, мы конвертировали в US-ASCII для надлежащей очистки входящих данных (т.е. вставленных из Word):

Iconv.conv("UTF-8//IGNORE", "US-ASCII", content)

При этом у нас больше не было проблем с кодировкой символов.

Кроме того, дважды проверьте, что нет других полей, которые требуют такого же преобразования, поскольку это может повлиять на все, что передает блок текста в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...