From: "遊楽庵" Date: 2008-01-22T23:44:58+09:00 Subject: [ruby-dev:33278] Re: Binary String 遊楽庵です。 NARUSE, Yui さんは書きました: > 成瀬です。 > > > 「感情的」だと語弊があるかもしれません。なんというか、ASCII-8BIT 以外の > 何かが欲しいというのが先行しているように感じられます。 > > ASCII-8BIT を ASCII 互換オクテット列と解釈した上で、これ以外のものを導入 > すると ASCII-8BIT との結合・比較ができなくなることを考えると、別の何かを > 導入することは困難という方向になると思うのですが。 > ありゃ、やっぱり「ASCII互換」という仮定は入ってしまうのですか。 それだとなんかバイナリデータのイメージからは外れて行っちゃいますね。 「ASCII互換」ということは他のコードにencode(force_encodeではなく)したら 変換されちゃいますよね。当然。 例えば、UNIXの「stringsコマンド」みたいのを実装することを考えると オブジェクトファイルはバイナリなので、バイナリモードでオープンして 読み込んだデータもバイナリです。 ここでencodingは「ASCII-8BIT」になります。 で、このデータからUTF-16の文字列を切り出して、encode("UTF-16")すると 元の文字列がUTF-16なのにも拘らず、さらに「ASCII→UTF-16」がかかって 文字列が壊れます。 force_encodingしろと言われてしまえばそれまでなんですが、 確か「force_encoding」ってエキスパート向けメソッドという話ですよね。 この処理がそんなにエキスパートな処理だと思いません。 なので、「ASCII-8BIT」が「ASCII互換」を仮定するなら、 encodeでもコードコンバージョンがかからないことを保証する「BINARY」 もしくはそれ相当のエンコーディングが欲しくなってしまいますね。 あともう一つ、無責任なアイデアなんですが、 encodingが「BINARY」の時は、String#[]やString#[]=がIntegerを返したり 設定したりできると、Stringを使って計算してる人も喜ぶんじゃないかと 思います。[ruby-dev:33186]にあったようなヤツです。 この動作は1.8互換なので、喜ぶ人もいるかと思うのですが… 実装の都合は一切考慮しておりませんので無理かもしれませんが 考えていただけると嬉しいです。 -------------------------------------- Easy + Joy + Powerful = Yahoo! Bookmarks x Toolbar http://pr.mail.yahoo.co.jp/toolbar/