※ ChatGPTを利用し、要約された質問です(原文:なぜRuby1.9が日本語処理できない問題)
なぜRuby1.9が日本語処理できない問題
次の簡単なRubyプログラム(test.rb)ですが、
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
while gets
$_.chomp!
tmp = $_.split(/ /)
s0 = tmp[0]
s1 = tmp[1]
s2 = tmp[2]
puts "line #{s0}\t#{s1}\t#{s2}"
end
入力テキストファイル(hello.txt)は次の2行です。
1 hello, everybody!
2 皆さん、 こんにちは。
test.rb hello.txt を実行すると、Ruby 1.8.7 は問題なく正常ですが。Ruby 1.9.3は次のエラーになりました。
line 1 hello, everybody!
k1.rb:7:in `split': invalid byte sequence in US-ASCII (ArgumentError)
from k1.rb:7:in `<main>'
何故でしょうか。詳しい方に教えて頂けるでしょうか。
どうぞ宜しくお願いします。
お礼
tcsh を使っています。 setenv LANG ja_JP.utf-8 で試してみましたが、直らなかったのです。 スクリプトの冒頭にEncoding.default_external = "utf-8"を書いたら問題が解決しました。 とても役に立ちました。大変感謝致します。