Ruby автоматически определяет кодовую страницу файла?

Если сохранить текстовый файл со следующим символом б U+0431, но сохранить его как файл кодовой страницы ANSI.

Руби возвращает ord = 63. Сохранение файла с UTF-8, так как кодовая страница возвращает ord = 208, 177

Должен ли я специально указывать Ruby на обработку ввода, закодированного с помощью определенной кодовой страницы? Если да, то как вы это делаете?


person Maulin    schedule 14.12.2009    source источник


Ответы (1)


Это в исходном коде ruby ​​​​или в файле, который читается с помощью File.open? Если это в исходном коде ruby, вы можете (в ruby ​​1.9) добавить это в начало файла:

# encoding: utf-8

Или вы можете указать большинство других кодировок (например, iso-8859-1).

Если вы читаете файл с File.open, вы можете сделать что-то вроде этого:

File.open("file.txt", "r:utf-8") {|f| ... }

Как и в случае с комментарием кодировки, здесь вы также можете передавать различные типы кодировок.

person sarahhodne    schedule 14.12.2009
comment
Я использую File.open и Ruby 1.8. r: utf-8 не работает. Это особенность 1.9? - person Maulin; 14.12.2009
comment
Ах да, это конкретно 1.9. 1.8 не так хорош, когда дело доходит до других кодировок. Однако вы можете попробовать либо вызвать ruby ​​с параметрами -K U, либо установить для переменной $KCODE значение "U", а затем require 'jcode', что устанавливает кодировку строки в UTF-8. Я не уверен, что это работает, и я рекомендую вам использовать Ruby 1.9, если вы можете. - person sarahhodne; 14.12.2009