From: "NARUSE, Yui" Date: 2008-01-21T07:12:04+09:00 Subject: [ruby-dev:33228] Re: Binary String 成瀬です。 Hidetoshi NAGAI wrote: > 簡単に言ってしまうと, > 「わからないものについては『わからない』って正直に言っちゃおうよ」 > って話です. > そうすれば「あれにすべき」だとか「勝手に与えるべきではない」だとかで > ゴタゴタしないでしょうし,未定義を扱いたい人もそうでない人も > どちらも納得できるようにできるかもと思ってます. 結局感情としてここに帰着しているのだろうなぁとは思っていたのですが、 >>> なんだかえらく複雑ですが、default_undefinedをプログラム中から >>> 変更できるならそれは一種の大域変数なので面倒な「状態」を導入 >>> することになります。スレッドセーフじゃなくなるし。それはあま >> 実装の問題はよく分かっていないのですが.そうなんですか? > > こんな感じのことを考えてたんですが... > ------------------------------------------------------------ > $ irb19 > irb(main):001:0> s = '感じ' > => "感じ" > irb(main):002:0> s.encoding > => # > irb(main):003:0> s2 = s.dup > => "感じ" > irb(main):004:0> s2.force_encoding('UNDEFINED-8BIT') > => "\xB4\xB6\xA4\xB8" > irb(main):005:0> Encoding.default_undefined > => # > irb(main):006:0> Encoding.default_undefined = 'EUC-JP' > => "EUC-JP" > irb(main):007:0> Encoding.default_undefined > => # > irb(main):008:0> s2 > => "感じ" > irb(main):009:0> s2.encoding > => # > irb(main):010:0> Encoding.default_undefined = 'ASCII-8BIT' > => "ASCII-8BIT" > irb(main):011:0> s2 > => "\xB4\xB6\xA4\xB8" > irb(main):012:0> s2.encoding > => # > irb(main):013:0> > ------------------------------------------------------------ > ここでは UNDEFINED-8BIT への force_encoding を許してますが, > これは禁止してもいいのかなと思ってます. 以下の動作は了解なさっていますか? 1. s2.encoding はずっとUNDEFINED-8BIT を返す、のは実装上の話として、 2. s1 (EUC-JP) + s2 は encoding が違うよエラー 3. ASCII-8BIT な文字列との結合・比較もエラー undefined という趣旨からして dummy フラグを付けてしまうと 4. US-ASCII な文字列との結合・比較もエラー undefined ってことは明らかになりますが、こんなもの本当に欲しいんですか? secure ruby みたいなものがあったらそこでは欲しそうですが。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA