From: Yukihiro Matsumoto Date: 2007-12-12T15:38:50+09:00 Subject: [ruby-dev:32551] Re: Binary String まつもと ゆきひろです In message "Re: [ruby-dev:32550] Binary String" on Wed, 12 Dec 2007 14:56:29 +0900, Hidetoshi NAGAI writes: | |永井@知能.九工大です. |encoding についての話です.間違っていれば訂正ください. | |binary string を明示できるような encoding を |追加してはいただけないでしょうか? | |# Tcl/Tk の encoding names では 'identity' となるもの. | |Ruby/Tk では,ruby から tk に文字列を送る際, |システムの encoding 情報に基づき,utf-8 に自動変換して送っています. |もちろん「変換明示が不要」というユーザの利便性を考えてのことです. | |Ruby 1.8 では $KCODE と Tk の encoding system とを用いていました. | |現状の Ruby 1.9 を見ると,encoding 未指定の場合の encoding は |ASCII-8BIT とされるように思えます. |自動変換は Encoding.default_external を参照することになるでしょう. |つまり,ASCII-8BIT である場合は, |実際には Encoding.default_external の encoding であると仮定して |utf-8 への自動変換をかけるわけです. default_externalが設定されていれば、そのエンコーディングであ ると分かっている文字列にはdefault_externalエンコーディングが すでに付与されているはずですから、ある文字列がASCII-8BITであ るということは、その文字列のエンコーディングは明示的に指定さ れていない(わからない)ということを意味するのだと思います。 ので、これはidentityと同様に扱えばよい(っていうか、暗黙の変換 をしてはいけない)と思うのですがどうでしょう? まつもと ゆきひろ /:|)