From: Tanaka Akira Date: 2008-01-17T18:18:29+09:00 Subject: [ruby-dev:33151] Re: Binary String In article <20080116.102057.41656941.nagai@ai.kyutech.ac.jp>, Hidetoshi NAGAI writes: > すみません.現在手持ちのサンプルがありません. [ruby-dev:33121] で述べられている 1.8 との互換性に関する話は、 かなり具体的な例に近いと思います。解決法はともかく、動機とし ては理解できます。 > でも,それはそれでまずくないですか? > 知らない charset (encoding) での処理が要求されたならば, > 例外を上げるべきでしょう. > そうした例外を無視して未定義のまま扱うのであれば, > 何が起っても (Tk での推測誤りを含めて) 文句は言えないと思います. 例外が適切かどうかはアプリケーションによるでしょう。 たとえば、HTTP で単一のファイルをダウンロードするアプリケー ションだったら例外によってダウンロードが失敗するというのは適 切な動作とは思えません。 HTTP で読み込んできたデータが tk にたどりつくのであれば例外 が適切かもしれませんが、単にファイルに格納するだけだったら ASCII-8BIT になっていても問題ないでしょう。 ここでの問題は、HTTP で読み込んでくるライブラリの中でそれを 判断できるか、という点です。 私としては、それは難しいんじゃないかと思います。 > 指定があったけれども Ruby が知らなかった場合と > 指定がない場合とを分けることができるようにするというのも > 良くないとお考えですか? 良くないというほどはっきりと確信があるわけではありませんが、 そんなに役に立つのだろうか、という疑問はあります。 予想として、ある程度 Ruby が知っているものが増えてくると、 Ruby が知らない場合というのは、指定が間違っているケースが多 くを占めてくるのではないかという気がします。 たとえば、HTTP で charset パラメータが間違っているというのは それなりにありそうなことだと思います。そして、そういう間違っ た名前を Ruby が最初から知っているようになるかというと、なら ないと思います。 そういう場合にどう処理するかというと、まぁ、ASCII 部分だけ扱 うくらいがいいんじゃないでしょうか。がんばってしまって、マル チバイトとか (あと UTF-7 とか) を検出してしまうと危ないこと にもつながりそうですし。そうすると ASCII-8BIT で充分かなぁ、 とか。 -- [田中 哲][たなか あきら][Tanaka Akira]