こんにちは、なかむら(う)です。

In message "[ruby-list:44870] Re: Ruby 1.9のARGVのエンコーディング"
    on Apr.30,2008 20:50:10, <naruse / airemix.jp> wrote:
> >>> デフォルトはlocale(かそれに類するもの)にして、何らかの形で別
> >>> 途エンコーディングを指定できるようにすべきだと思います。
> >>> # と、去年の2月に言った気がする
(中略)
> その要望自体が正当なものであろうという点については異議はありません。
> 
> しかし、実際問題として、
> * 当該プラットフォームでは、
>  「locale であるとみなしているエンコーディング」と、
>  「ファイルシステムのエンコーディング」どちらを用いる API も存在する
> * 当該プラットフォームでは現在「ファイルシステムのエンコーディング」で
>  アクセスする方法が提供されていない(ですよね?)
> 
> つまり、結局のところ件のプラットフォームではどのエンコーディングで
> 返すのが親切なのかよくわかりません。
> # 近い将来 UTF-16 とかになるのかな

返すべきエンコーディングを指定できるのが親切であるのは間違い
なく、それ以外は不親切であると思います。
もちろん、実装コストの問題はあるので親切至上主義を主張するわ
けではないのですが(そのコストの一部を払うのは私だし)...


> >> つまり、原則 locale と同一であろうとみなして、
> >> そうでない場合は force_encoding で拾えばいいのではないかと。
> > 
> > これって具体的にどういうコードを想定してるんですか?
> 
> ユーザーサイドで泥臭く force_encoding です。
> スマートな方法が他にあれば、それの方がいいのでしょうけれど、
> 思いついたのは大がかりなものばかりでした。

いや、ユーザーサイドの「どこで」force_encodingを使って何をど
うするのかがわからないのでお聞きしています。
具体的には、現状でDir.entriesを使うと、

  files = Dir.entries(path)

というコードになるわけですが、このコードのどこにforce_encoding
を入れろということなのかな、と。

[ruby-list:44864]の例(localeがutf-8でファイルエントリがeuc-jp)
だと、例えば、

  files = Dir.entries(eucpath.encode('utf-8')).map{|f|f.force_encoding('euc-jp')}

となる、という意味でしょうか?


それでは。
-- 
U.Nakamura <usa / garbagecollect.jp>
全然関係ないけど、map(&:force_encoding, 'euc-jp') と書きたいな