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

时间:2010-11-20 18:50:31

标签: ruby macos encoding utf-16le

我在test.rb

中有以下名为UTF-16LE编码的文件
# encoding: UTF-16LE

test = "test!"
p test

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

ruby ./test.rb

我在这里缺少什么?


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

1 个答案:

答案 0 :(得分:7)

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

Ruby 1.9支持字符串编码,James Gray有关于该主题的excellent series篇文章 - 我认为它们是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/ruby-1.9/classes/IO.html