Как изменить html кодированный символ на ascii - PullRequest
1 голос
/ 08 декабря 2011

У меня есть французский символ, который кодируется следующим образом:

"Jos \ xE9e"

Мне нужно преобразовать его в обычный символ, потому что на моем сервере это выдает:

неверная последовательность байтов в UTF-8

Что я могу сделать, чтобы исправить эту ошибку?

Rails 3 Ruby 1.9.2

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

Это похоже на "Хосе", закодированный в ISO 8859-1 (AKA Latin-1).Вы можете использовать Iconv , чтобы преобразовать его в UTF-8:

require 'iconv'
utf_string = Iconv.conv('UTF-8', 'ISO-8859-1', "Jos\xE9e")
3 голосов
/ 08 декабря 2011

Используйте редактор с поддержкой utf-8 и добавьте строку кодирования вверху всех исходных файлов:

# coding: utf-8

Если какая-то входная строка не является utf-8, сначала преобразуйте ее в utf-8 перед обработкой:

input_str = "Jos\xE9e"
utf_input = input_str.force_encoding('iso-8859-1').encode('utf-8')

Все вышеперечисленное работает только под ruby ​​1.9. Для получения дополнительной информации вы можете проверить книгу: Ruby Best Practices.

0 голосов
/ 08 декабря 2011

вы должны использовать utf8 во всем вашем исходном коде, как насчет сохранения вашего файла в кодировке utf-8

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