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でプログラムを作成することは、ロシア語のWebサイトを作成するためにロシア語で変数に名前を付けるように聞こえます。:)

Ruby 1.9は文字列エンコーディングをサポートしており、 JamesGrayにはこのトピックに関する優れた一連の記事があります。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.9IOクラスのドキュメントにもあります。

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

于 2010-11-20T20:34:44.533 に答える