3

我有以下名为test.rbencoding 的文件UTF-16LE

# encoding: UTF-16LE

test = "test!"
p test

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

ruby ./test.rb

我在这里想念什么?


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

4

1 回答 1

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"

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

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

于 2010-11-20T20:34:44.533 回答