Пакетное преобразование в UTF8 с использованием Ruby - PullRequest
1 голос
/ 19 мая 2011

У меня небольшая проблема с кодировкой файлов.К сожалению, пока я все еще не в хороших отношениях со всем, где кодирование имеет значение;хотя я многому научился с тех пор, как начал использовать Ruby 1.9.

Моя проблема под рукой: у меня есть несколько файлов для обработки, которые должны быть в формате UTF-8.Но я не знаю, как правильно конвертировать эти файлы;например, когда в Ruby я открываю файл, кодирую строку в utf8 и сохраняю ее в другом месте.К сожалению, это не так - файл все еще находится в ANSI.По крайней мере, так говорит мой Блокнот ++.Хотя я нахожу это странным, потому что строка была явно закодирована в UTF-8, и я даже установил параметр File.open :encoding в 'UTF-8'.Моя оболочка установлена ​​на CP65001, что, я думаю, также соответствует UTF-8.

Есть предложения?Большое спасибо!

/ e: Более того, в Notepad ++ я могу конвертировать вручную следующим образом:

  • Выбор всего,
  • копирование,
  • установка кодировки в UTF-8 (здесь можно увидеть \ x-escape-последовательности)
  • вставка всего из буфера обмена

Готово!Escape-символы исчезают, файл может быть обработан.

1 Ответ

1 голос
/ 19 мая 2011

К сожалению, это не так - файл все еще находится в ANSI.По крайней мере, так говорит мой Блокнот ++.

UTF-8 был разработан как расширенный набор ASCII, что означает, что большинство печатных символов ASCII одинаковы в UTF-8.По этой причине невозможно различить ASCII и UTF-8, если у вас нет «специальных» символов.Эти специальные символы представлены с использованием нескольких байтов в UTF-8.

Вполне возможно, что ваше преобразование действительно работает, но вы можете перепроверить, попробовав свою программу со специальными символами.

ТакжеОдна из лучших утилит для преобразования между кодировками - iconv, которая также имеет привязки ruby ​​.

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