Обнаружьте кодирование

Я получаю некоторые строковые данные из сети, и я подозреваю, что это не всегда, что это говорит, что это. Я не знаю, где проблема, и я просто не забочусь больше. Со дня один на этом проекте я боролся со строковым кодированием Ruby. Я действительно хочу некоторый способ сказать: "Вот строка.Что это?", и затем используйте те данные для получения его к UTF-8 так, чтобы это не взрывалось gsub() 2 000 строк вниз в глубинах моего приложения. Я проверил rchardet, но даже при том, что это, предположительно, работает на 1,9 теперь, это просто аварийно завершается, учитывая любой вход с несколькими байтами..., который не полезен.

10
задан jotik 25 April 2016 в 14:57
поделиться

3 ответа

Невозможно определить по строке, в какой кодировке она находится. Всегда нужны дополнительные метаданные, которые подскажут вам кодировку строки.

Если вы получаете строку из Интернета, эти метаданные находятся в HTTP-заголовках. Если HTTP-заголовки неверны, вы, Ruby или кто-либо другой не можете сделать абсолютно ничего. Вам нужно подать заявку на ошибку вебмастеру сайта, с которого вы получили строку, и ждать, пока он ее исправит. Если у вас есть соглашение об уровне обслуживания с сайтом, напишите об ошибке, подождите неделю, а затем подайте на них в суд.

8
ответ дан 3 December 2019 в 16:51
поделиться

Можете попробовать прочитать это: http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/

0
ответ дан 3 December 2019 в 16:51
поделиться

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

export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

Попробуйте ruby -EBINARY или ruby -EASCII-8BIT в командной строке

Попробуйте добавить -Ku или -Kn в командную строку ruby.

Не могли бы вы вставить сообщение об ошибке?

Также попробуйте следующее: http://github.com/candlerb/string19/blob/master/string19.rb

1
ответ дан 3 December 2019 в 16:51
поделиться
Другие вопросы по тегам:

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