如何在Ruby中使用UTF-16LE源代码?

kub*_*ubi 3 ruby macos encoding utf-16le

我有以下文件名为test.rb编码UTF-16LE

# encoding: UTF-16LE

test = "test!"
p test
Run Code Online (Sandbox Code Playgroud)

使用以下命令运行它不会产生任何结果

ruby ./test.rb
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?


如果有人想知道,我试图将我的源设置为UTF-16LE编码的原因是我正在使用UTF-16LE输入和输出文件编码.我的印象是,如果我在读取文件时正确设置编码并在输出时正确设置编码并且我# encoding:在源代码中正确设置了编码,那么一切都应该正常工作.如果有人看到任何错误(或更容易的方式),请随时告诉我.

Mla*_*vić 7

以UTF-16编写程序以处理UTF-16文件听起来像是用俄语命名变量以制作俄语网站.:)

Ruby 1.9支持字符串编码,James Gray有一系列关于该主题的优秀文章 - 我认为它们是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"
Run Code Online (Sandbox Code Playgroud)

一切也在1.9 IO类的文档中:

http://ruby-doc.org/ruby-1.9/classes/IO.html