В настоящее время я пытаюсь написать скрипт, который выполняет итерацию по входному файлу и проверяет данные на веб-сайте. Если он находит новые данные, он распечатывает терминал, который он передает, если он не говорит мне, что он терпит неудачу. И наоборот для удаленных данных. Он работал нормально до тех пор, пока входной файл, который я получил, не содержит символ «™». Затем, когда рубин приходит в эту линию, он выплюнул ошибку:Ruby несовместимые кодировки символов
PDAPWeb.rb:73:in `include?': incompatible character encodings: UTF-8 and IBM437 (Encoding::CompatibilityError)
Нарушитель линия простая проверка, чтобы увидеть, если текст на странице существует.
if browser.text.include? (program_name)
Где переменная program_name - анализируемая часть информации из входного файла. В этом случае имя_программы содержит символ «TM», упомянутый ранее.
После некоторого исследования я обнаружил, что добавление строки # encoding: utf-8 в начало моего скрипта могло бы помочь, но до сих пор не оказалось полезным.
Я добавил это в свою переменную program_name, чтобы узнать, поможет ли она (и это позволило моему сценарию работать без ошибок), но теперь он неправильно находит символ TM, когда он должен быть.
program_name = record[2].gsub("\n", '').force_encoding("utf-8").encode("IBM437", replace: nil)
Это казалось преобразовать характер ТМ к этому: Γäó
Я подумал, что я имел IBM437 и UTF-8 частей вспять, поэтому я попытался противоположный
program_name = record[2].gsub("\n", '').force_encoding("IBM437").encode("utf-8", replace: nil)
и теперь я получение этой ошибки при попытке запуска сценария
PDAPWeb.rb:48:in `encode': U+2122 from UTF-8 to IBM437 (Encoding::UndefinedConve rsionError)
Я использую ruby 1.9.3p392 (2013-02-22)), и я не уверен, что я должен обновиться, поскольку это стандартная версия, установленная в моей компании.
Является ли моя кодировка неправильной и заставляет ее преобразовывать символ ТМ с ошибками?
Есть причина вы кодируете 'IBM437'? –
Я не был уверен, что у меня был порядок кодирования, я просто пошел с тем, что он сказал в ошибке, изначально (до того, как я добавил какую-либо кодировку) –
«Я подумал, что, возможно, у меня были части IBM437 и utf-8, поэтому я попробовал обратное и теперь получаю эту ошибку при попытке запустить скрипт «Можете ли вы показать этот код. Что-то не имеет смысла. –