From: "U.Nakamura" Date: 2008-01-28T12:49:24+09:00 Subject: [ruby-dev:33441] Re: Win32OLE: set encoding to OLE string こんにちは、なかむら(う)です。 In message "[ruby-dev:33439] Re: Win32OLE: set encoding to OLE string" on Jan.28,2008 12:21:23, wrote: | > 互換性のことを考えるとあんまり簡単に変更はできないんですけど | > ね。 | > メソッドを分けるか、結果のencodingを何らかの形で指定できるよ | > うにするかしないといけないとは思うんですが。 | | インスタンスを作る時にデフォルトを指定して振り分けとかなのですかね。 | default_external が ASCII-8BIT なら multi byte で、それ以外は UTF-8 とか | だと微妙かなぁ。 default_externalそのものになるならいいと思うんですが、 default_externalがWindows-31Jなのに結果が勝手にUTF-8になって たら、私だったら呆然とします。 つーかそれ1.8とまったく互換性ないじゃないですかー。 | > 個人的には、どっちでも同じ程度には使えない :) と思うので、ど | > っちでもいいんですが、UTF-8の方がよっぽど有利とかじゃなければ、 | > APIが返した形をそのままの方が実装する方は楽なのでそっちかな、 | > と思います。 | > # というわけで「よっぽど有利」の例は募集。 | | えー、そうですかー。 | lead-byte と trail-byte が違うあたり、最高だと思うんですけれど。 | 2バイト目が壊れてる SJIS はもとより、EUC だってめじゃないですよ! | ひらカタ漢字 3 byte ですけど! まあ、それらは全てRubyで扱う分には気にならないはずなので :) | * UTF-8 はビルトインエンコーディングだが、UTF-16LE は違う locale charmapもそうじゃないのであんまり気になりません。 Shift_JISやEUC-JPがビルトインじゃなくなったのは、そういうこと を気にした方が負け、という道をrubyは選択したということじゃな いかと思います。 というか、必要であればWindowsではUTF-16LEをビルトインにすると いう選択もありえます(しないと思うけど)。 | * UTF-8 は ascii compatible だが UTF-16LE は違う | | * UTF-8 と UTF-16LE は情報を失うことなく、計算で変換可能 | ですしね。 この2点は、UTF-8を選ぶに足る理由であるとは思います。 私のほうからUTF-16LEを推すメリットも挙げておきましょうか。 * UTF-16LEを受け付けるWin32 APIは山ほどあるが、UTF-8を受け付 けるAPIは事実上ない。 * UTF-16LE -> UTF-8 は計算で変換可能とはいえ、毎回必ずこの変 換が必要になる。 * OSから取得した文字列を自動的にencoding変換する処理は現在の rubyにはないので異質である。(あ、Timezoneでなんか入ったっけ?) それでは。 -- U.Nakamura