From: "NARUSE, Yui" Date: 2008-01-11T19:28:26+09:00 Subject: [ruby-dev:33029] Re: Binary String 成瀬です。 Hidetoshi NAGAI wrote: > 永井@知能.九工大です. > > From: "NARUSE, Yui" > Subject: [ruby-dev:33020] Re: Binary String > Date: Fri, 11 Jan 2008 18:26:56 +0900 > Message-ID: <47873667.9090704@airemix.com> >> この話は [ruby-dev:32550] の話だと思うのですが、現在は >> 「Encoding.default_external の encoding であると仮定して >> utf-8 への自動変換をかける」べき文字列には最初から default_external の >> encoding がセットされているはずです。つまり、その時点でまだ ASCII-8BIT >> になっているならば、それはバイナリデータだと判断すべきでしょう。 > > 非対応 locale だったりした場合には default_external は ASCII-8BIT に > なってしまうのではなかったでしょうか? 現在は非対応 locale だらけですが、一般の使用に供せる頃にはほぼ問題なく なっているはずです。 > 先のメールでは「default_external で」とは書きましたが, > Ruby 側が不明確な場合には,Tcl/Tk 側の encoding_system を > 使うようにしています. > > # まだ Ruby 側と Tcl/Tk 側の encoding 名の対応はできていませんが. > > そうしたケースで Ruby 上ですべて ASCII-8BIT にされてしまうと > どうしようもありません. 上を前提にすると、テキストであるのにもかかわらず ASCII-8BIT を指定された 文字が Tcl/Tk に渡ってしまうことそれ自体が問題かとおもいます。Ruby 1.9 では string を推測で文字コード自動変換という考え自体が間違っていますし、 そのような状況は上流で防ぐべきでしょう。 結局田中さんの [ruby-dev:33027] と趣旨は同じなのですが、"BINARY" が ASCII-8BIT の alias であることからも、テキストを ASCII-8BIT のまま渡すの が間違いです。 # 「呼び出されるメソッド側で判断しろ」でなく、 # 「呼び出すメソッド側が encoding をつけろ」ですね。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA