初めて投稿します.Ruby 1.9.1 を使っていて,文字コードの扱いに慣れようと四苦八苦しています.


# -*- coding: Shift_JIS -*-
#
# これは Ruby のバグでしょうか? (Ruby 1.9.1p129 for MSwin32)
#
# $stdin.set_encoding("Shift_JIS") として標準入力の文字コードを変更すると,
# その直後の $stdin のストリームにはすでに \n が入っていて,$stdin からの
# 入力を待たずに,ただちに次の行に制御を移し,終了してしまいます.
#
p Encoding.default_external #=> #<Encoding:Windows-31J>
p Encoding.default_internal #=> nil
#
s = gets        #<= "あいうえお"
p s.encoding    #=> #<Encoding:Windows-31J>
p s             #=> "あいうえお\n"
$stdin.set_encoding("Shift_JIS")
s = gets        #<= "かきくけこ"
p s.encoding    #=> #<Encoding:Shift_JIS> ?
p s             #=> "かきくけこ\n" ?

どなたかご教示いただければ幸いです.よろしくお願いいたします.

----------
俊(とし)
* 望湖庵日記 http://griffin.cocolog-nifty.com/lakesidedairy/