From: Urabe Shyouhei Date: 2010-05-12T14:24:06+09:00 Subject: [ruby-dev:41296] Re: [BUG:1.9] BINARY should not be ASCII-compatible 卜部です。 (2010/05/12 8:42), Yugui wrote: > 2010/5/11 Urabe Shyouhei : >> 偉い人の仕事には「どっしりと構えて些細なことでは動じない」というのもあると思っ >> てます。 > > 偉い人は置いておいて、私はよりよい可能性があればいくらでも軽薄に立場を変えます。 > ただ、それが本当によりよいのかについては慎重でありたく、-devで意見を聞きたい訳です。 誤解を招いていそうなので補足しますと、-devで意見を聞くことは良いことで、そこは 否定してません。また、本当にみんなにとって幸せな解決策が見つかればいいなという 祈りのようなものは私も持っています。 そこで技術的な部分にフォーカスして考えるのですが、 > これに賛同します。rb_str_newが生成する文字列はascii-compatibleなままでいきましょう。それでも、もし可能ならば > アプリケーション開発者の悲劇を防ぎたいです。たとえば、ASCII-8BIT(1.8との互換性のためのもの, index > 0)とBINARY(octetのためもの)を分離して、 > ASCII-8BITは任意のエンコーディングと結合可能で結果はASCII-8BIT、という仕組みなんかはどうでしょうか。 これはたぶんrb_str_newした文字列は新ASCII-8BITになって、それを連結していくと、 非互換な文字列でも黙ってASCII-8BITに汚染されるということかと思いました。すると 既存のライブラリをそのまま動かすと、いつのまにかASCII-8BITな文字列が増えること が想像できます。それをアプリケーション開発者が避けるにはどうすればいいのかな、 やっぱことあるごとにforce_encodingつけて回るとかでしょうか。アプリケーションは ちょっと不便になりそうですね。その「ちょっと」が許容できるのなら、ありかなあと いう気もします。