Самый простой способ - просто открыть файл как UTF-16LE:
register_mark = "\00ua3" # or even just: register_mark = ®
File.open('C:/Output.txt', 'wt', encoding: 'UTF-16LE') do |f|
f.puts register_mark
end
Важным битом здесь является явное указание кодировки файла с использованием клавиши :encoding
в options
Hash
метода File.new
(или в данном случае File.open
). Таким образом, строки, записанные в файл, будут преобразованы автоматически, независимо от того, в какой они кодировке.
Я также позволил себе сменить код на более идиоматический стиль Ruby:
- Сообщество Ruby использует
snake_case
, а не CamelCase
для имен переменных и методов.
- Глобальных переменных следует избегать, тем более что в вашем примере они в любом случае совершенно лишние.
- Здесь действительно нет необходимости использовать
Array#pack
, просто запишите, что вы хотите.
- По возможности используйте блочную форму
File.open
, которая позаботится о том, чтобы закрыть файл для вас, даже в случае ошибки или исключения.
- При работе с текстовыми файлами вы всегда должны передавать модификатор
t
. Это не имеет никакого значения в большинстве операционных систем (именно поэтому, к сожалению, большинство Rubyists забывают об этом пропустить), но это крайне важно в Windows, что вы и используете. *