Я получаю "несовместимые кодировки символов: CP850 и UTF-8" при отображении символа £ в моем приложении ramaze

Я получаю "несовместимые кодировки символов: CP850 и UTF-8" при отображении £ символ в моем приложении ramaze. Как я могу избавиться от этой ошибки? У меня в голове есть метатег UTF-8.

Это происходит, когда я печатаю £ символ с клавиатурой. Посмотрите.

ошибка кодирования

Я поместил следующий код в мой файл ruby, и это не устранило проблему.

# encoding: UTF-8 
Encoding.default_external = 'utf-8'
Encoding.default_internal = Encoding::UTF_8

3 ответа

Решение

Попробуйте форсировать кодировку, чтобы увидеть, устраняет ли это проблему:

your_string.force_encoding(::Encoding::UTF_8)

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

Возможно, это связано с сервером / веб-страницей, поскольку на странице, которую вы обслуживаете, отображается заголовок US-ASCII. Или сервер запускается с кодировкой, отличной от UTF-8. Или что-то другое на этот счет. Ваш сценарий заканчивается частью внешних данных, которые не являются UTF-8.

Проблема с Windows? Попробуйте использовать Iconv:

Iconv.conv('utf-8', "WINDOWS-1253", X)

Вы должны преобразовать текст из UTF-8 в другую кодировку, а затем обратно в UTF-8.

content = content.force_encoding("ISO-8859-1").encode("utf-8", replace: nil)

Обновление: этот ответ не сработал для меня, но может помочь вам.

Другие вопросы по тегам