ARGF.set_encoding
言います:
単一の引数が指定されている場合、ARGF から読み取られた文字列は、指定されたエンコーディングでタグ付けされます。
"ascii:utf-8" のようにコロンで区切られた 2 つのエンコーディング名が指定された場合、読み取られた文字列は最初のエンコーディング (外部エンコーディング) から 2 番目のエンコーディング (内部エンコーディング) に変換され、次に 2 番目のエンコーディングでタグ付けされます。
だから私は以下を試しました:
p RUBY_VERSION
p ARGF.external_encoding
ARGF.set_encoding('ascii')
p ARGF.readlines($/)
出力:
D:\Rubyscript\My ruby learning days>ruby true.rb a.txt
"2.0.0"
#<Encoding:IBM437>
["Hi! How are you?\n", "I am doing good,thanks."]
p RUBY_VERSION
p ARGF.external_encoding
ARGF.set_encoding(ARGF.external_encoding,'ascii')
p ARGF.readlines($/)
出力:
D:\Rubyscript\My ruby learning days>ruby true.rb a.txt
"2.0.0"
#<Encoding:IBM437>
["Hi! How are you?\n", "I am doing good,thanks."]
エンコーディングの変更はありません。ですから、正しいアプローチを教えてください。