1

私は Perl のバックグラウンドを持つ Ruby の初心者です。また、utf-8 でエンコードされたファイルから読み取ったマルチバイト文字列の .reverse で問題が発生しました。

コード:

#!C:\Ruby200-x64\bin\ruby
puts "Content-Type:text/plain;charset=utf8\n\n" #I execute it via CGI
$: << "."
puts "А это строка".reverse #mb-string output is pretty fine
#but when I do the following, it fails;
file = File.open('test_rb_file.txt','r')
file.each_line {|line| puts line.reverse} #puts line works good, but not puts line.reverse

スクリプト自体は utf-8 です。test_rb_file.txt は utf-8 です。そのため、マルチバイト文字列を出力しようとすると、すべて問題ありませんが、ファイルから読み取って逆にしようとすると失敗します。

私が読んだファイル(test_rb_file.txt)のエンコーディングを指定するとうまくいくと思いますが、今のところその方法がわかりません。そして、私はそれについて間違っているかもしれません。

問題を解決するためのアイデアはありますか? 前もって感謝します

UPDすべて修正しました。皆様ありがとうございました。次のことは、入力ファイルのエンコーディングを設定し、問題を修正します。

file = File.open('test_rb_file.txt','r:UTF-8')
4

1 に答える 1

0
File.open('test_rb_file.txt','r:UTF-8')

文字列のエンコーディングをチェックするには"YourString".encoding

于 2013-05-08T13:04:13.247 に答える