мы используем Rails 3 и Spree Commerce для нашего интернет-магазина, и у нас есть поставщик платежей, который возвращает ошибки в URL-адресе перенаправления, если они возникают. Когда возникает ошибка, мы представляем эту строку флэш-сообщениям пользователю.Неверная последовательность байтов в UTF-8 с флэш-сообщениями Rails
Вчера что-то не работает, а поставщик платежных возвращается эта строка в URL переадресации, который должен быть представлен пользователю в сообщении вспышки:
errormsg=Bitte+versuchen+Sie+es+sp%E4ter+nochmals.
Я отлажен немного, и строка выглядит следующим образом при декодировании (например, записывается на флэш [: ошибка]):
Bitte versuchen Sie es sp\xE4ter nochmals.
И после этого, возникает ошибка, когда рельсы пытается оказать мгновенное сообщение:
invalid byte sequence in UTF-8
Может кто-нибудь сказать мне, как это исправить? Ошибка должна содержать немецкий ä
, а не \xE4
. Я попытался установить # encoding: utf-8
в начало контроллера и вид, но это не помогает.
У вас есть * любой * контроль над тем, как поставщик платежей генерирует URL-адрес? –
Да, я могу указать URL-адрес переадресации, и поставщик добавляет параметры. После этого я могу делать все, что захочу, с параметрами. Я думал о принудительной кодировке UTF-8 или об этом. Но я не могу понять, как отобразить правильный символ 'ä' – 23tux
Ну, если вы можете решить, какую кодировку использует провайдер, вы можете декодировать их параметры, а затем перекодировать их в UTF-8 ... (Или просто не перекодировать, если вам просто нужно это как tetx.) –