[#44909] VRDdeClientについて — Toshiyasu Soejima <clev@...2.so-net.ne.jp>
#
17 messages
2008/05/11
[#44911] Re: VRDdeClientについて
— yukimi_sake <yukimi_sake@...>
2008/05/11
こんにちは、雪見酒です。
[#44923] Re: VRDdeClientについて
— Takahiro Kambe <taca@...>
2008/05/13
In message <4826942F.4080102@ck2.so-net.ne.jp>
[#44910] SimpleDelegator#dupの引数objについて — "SHIMADA Koji" <snoozer.05@...>
しまだです。
6 messages
2008/05/11
[#44936] yamlとencoding — "Yutaka Kanemoto" <kinpoco@...>
金本と申します。
16 messages
2008/05/14
[#44937] Re: yamlとencoding
— "NARUSE, Yui" <naruse@...>
2008/05/14
成瀬です。
[#44952] Re: yamlとencoding
— "NARUSE, Yui" <naruse@...>
2008/05/17
成瀬です。
[#44997] Re: yamlとencoding
— "Yutaka Kanemoto" <kinpoco@...>
2008/06/03
金本と申します.
[#44942] Gemでhpricotインストールエラー — "Yangkook Kim" <yangkookkim@...>
Kimと申します。
8 messages
2008/05/16
[#44945] Re: Gemでhpricotインストールエラー
— rubikitch@...
2008/05/16
From: "Yangkook Kim" <yangkookkim@gmail.com>
[#44980] 重いタスクと平行にirbを使うと遅い? — "takeru sasaki" <sasaki.takeru@...>
佐々木と申します。
8 messages
2008/05/31
[#44981] Re: 重いタスクと平行にirbを使うと遅い?
— rubikitch@...
2008/05/31
From: "takeru sasaki" <sasaki.takeru@gmail.com>
[#44986] Ruby 1.8.7 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.7 をリリースしました。
5 messages
2008/05/31
[ruby-list:44877] Dir.entriesのエンコーディング (was Re: Ruby 1.9のARGVのエンコーディング)
From:
"U.Nakamura" <usa@...>
Date:
2008-05-01 00:46:57 UTC
List:
ruby-list #44877
こんにちは、なかむら(う)です。
# Subject変えました
In message "[ruby-list:44875] Re: Ruby 1.9のARGVのエンコーディング"
on May.01,2008 02:47:19, <naruse@airemix.jp> wrote:
> 実装コストはあまり気にしてなくて、むしろ UI ですかね。
> Dir.entries(path, :encoding=>"UTF-8") でもまぁいいのかなぁ。
Dir.entriesだけを取ってみるならば、こうするのがいけない理由が
思いつきません。
# が、Dir.globなどに考えを広げるとちょっと悩ましい
> って、いつもの引数文字列のエンコーディングで指定ですか?
> 内部実装向けの hack としては簡潔で素晴らしいとは思うのですが、
> 一般ユーザ向けにはいかがなものかなぁと。
実は成瀬さんの言う「force_encoding」がそういう話なんじゃない
かと思ったりもしてました。
成瀬さんはこの方式にはあまり賛成でない、と。
> > [ruby-list:44864]の例(localeがutf-8でファイルエントリがeuc-jp)
> > だと、例えば、
> >
> > files = Dir.entries(eucpath.encode('utf-8')).map{|f|f.force_encoding('euc-jp')}
> >
> > となる、という意味でしょうか?
>
> こちらはそういう想定でした。
つまり、戻ってくる文字列は実際のエンコーディング(rubyは知って
るかもしれないし知らないかもしれない)と関わりなく、常にlocale
のエンコーディングが設定されているということですか。
その場合、localeのエンコーディングでは不正となるバイト列が返
されたら何が起きるんでしょう?
勝手にASCII-8BITになる? それとも例外?
Dir.entriesの場合、話に出てくるエンコーディングは3つありえて、
(1) 引数であるパス指定のエンコーディング
(2) 実際のファイルシステム上のエントリのエンコーディング
(3) 結果配列内の各文字列のエンコーディング
となります。
(1)は引数自体が知ってるから問題ないですね。
(2)は、rubyが知っている環境もあれば、rubyが知らない環境もあり
ます。
(3)は、少なくともスクリプト作者はどのエンコーディングで結果が
欲しいかを知っているはずで、それは多くの場合(1)と同じだろうと
は推測できます。
以上の考察から、私の提案はこうです。
* (3)は(1)と同一とみなして適宜変換する
* (2)のデフォルトはlocale(rubyが知っている場合はもちろんそ
れを使う)とし、別途オプション引数等で指定可能とする
* もし(1)と異なるエンコーディングで(3)が欲しいという特殊な
事態があれば、それはスクリプト作者が(1)をどうにかする
* (1)がUS-ASCIIでかつ(2)がいわゆるASCII互換でない場合、locale
またはオプション引数で指定されたエンコーディングを(3)に用
いる
こうすると、例えば、まつもとさんの環境でUTF-8で結果が欲しけれ
ば、
files = Dir.entries(utf8path, :encoding => 'euc-jp')
となるでしょうし、私の環境(日本語版Windows)でWindows-31Jで結
果が欲しければ、ファイルシステムのエンコーディングはrubyが知
っているので、
files = Dir.entries(sjispath)
となるでしょう。
それでは。
--
U.Nakamura <usa@garbagecollect.jp>