From: Nobuyoshi Nakada Date: 2014-06-30T17:04:25+09:00 Subject: [ruby-list:49857] Re: encoding of backtrace (2014/06/29 21:45), OHARA Shigeki wrote: >>> これを端末の encoding に合わせて出力する方法はあるでしょうか? >> >> 今のところは対応していません。変換できない文字があった場合にさらに例外 >> が発生してしまうのが悩ましいところです。 > > なるほど。現状は、敢えてそのまま出力している、ということでしょうか。 「敢えて」というほど意図的ではありませんが、そういう状況でどうするべき か未定ということはあります。 > さらにコードなどを調べずに聞いてしまいますが、 > これは仕組みとしてはどういうふうになっているのでしょうか? > $stderr を通る物は全て set_encoding の指定に従って > 変換されると思っていたのですが (そこから勘違いしてるかもしれませんが) 、 > backtrace は変換されないのは何故だろうという疑問です。 このエラーメッセージが出るのは、script上ではrescueされずにプログラム全 体が終了するときです。うっかり余計なことをしていると二重にエラーになっ てしまう危険性もあり、可能な場合はrubyのオブジェクトを介さずにCレベルで そのまま出すようになっています。 > io.c を眺めていたら、 > void rb_stdio_set_default_encoding(void) というのを見つけたので、 > IO.stdio_set_encoding() があると便利なのかなと思いました。 > もっとも、これでもせいぜい 3 行が 1 行になる程度ですが。 新機能は https://bugs.ruby-lang.org/projects/ruby-trunk/issues/new で。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦