Как мне работать с исходным кодом UTF-16LE в Ruby? - PullRequest
3 голосов
/ 20 ноября 2010

У меня есть следующий файл с именем test.rb кодировка в UTF-16LE

# encoding: UTF-16LE

test = "test!"
p test

Запуск его с помощью следующей команды не дает результатов

ruby ./test.rb

Что мне здесь не хватает?


В случае, если кому-то интересно, причина, по которой я пытаюсь установить свой источник в кодировку UTF-16LE, заключается в том, что я работаю с кодировками входного и выходного файлов UTF-16LE. У меня сложилось впечатление, что если я правильно установил кодировку при чтении в файле и правильно установил кодировку при выводе, и у меня правильно установлен # encoding: в моем источнике, все должно просто работать. Если кто-то видит что-то не так с этим (или более простым способом), дайте мне знать.

1 Ответ

7 голосов
/ 20 ноября 2010

Написание вашей программы на UTF-16 для обработки файлов UTF-16 звучит как присвоение имен вашим переменным на русском языке для создания русского сайта. :)

Ruby 1.9 поддерживает строковое кодирование, а у Джеймса Грея превосходная серия статей по этой теме - я считаю их справочным руководством по кодировкам в Ruby.

Короче говоря, вы можете указать кодировку входных файлов при их открытии:

s = ''
File.open('utf16le.txt', 'rb:UTF-16LE') do |f| # here you set the encoding
  s = f.read
end
p s.encoding
#=> #<Encoding:UTF-16LE>
p s.length
#=> 19
p s
#=> "test\nmladen\n\u0436\u045F\u0446\u0432\u0431\n\n"

Все также есть в документации для 1.9 IO класса:

http://ruby -doc.org / рубин-1,9 / классы / IO.html

...