[ruby-list:49857] Re: encoding of backtrace
From:
Nobuyoshi Nakada <nobu@...>
Date:
2014-06-30 08:04:25 UTC
List:
ruby-list #49857
(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はできる。
中田 伸悦