[#47955] るびま記事募集:FiberとかSinatra/PadrinoとかBundlerとか — Makoto Kuwata <kwa@...>

桑田といいます。るびま編集部に入りました。

17 messages 2011/04/11

[#48016] 文字列を正規表現にマッチする部分と他の部分に分割 — "5.5" <5.5@...>

5.5 です。

12 messages 2011/04/28

[ruby-list:47975] Re: CSV.read で読むとUTF-8の扱いがおかしい?

From: "Y. NOBUOKA" <nobuoka@...>
Date: 2011-04-15 07:37:38 UTC
List: ruby-list #47975
信岡です。
CSV::read メソッドに関して、エンコーディングを明示的に指定してやらなければならない
とのことですが、ちょっと気になった点があったのでその流れで質問します。

CSV クラスのソースコードを見ると、読み込む CSV ファイルのエンコーディングと
Encoding.default_external が一致しない場合は、エンコーディングを指定する必要が
あると書かれています。
『This method also understands an additional <tt>:encoding</tt> parameter that
you can use to specify the Encoding of the data in the file to be
read. You must
provide this unless your data is in Encoding::default_external().』 [1]
[1] http://rxr.whitequark.org/mri/source/lib/csv.rb#1390

しかし、実際には Encoding.default_external がなんであれ、エンコーディングを指定しなければ
読み込まれたデータは ASCII-8BIT になってしまいます。
これは、ファイルを開く際のモードがバイナリモード (第 2 引数 'rb' になっている) になっている
からなわけですが、

1. CSV ファイルをバイナリモードで開く必要性はあるのでしょうか? 単純に mode 'r' で
開けば良いように思うのですが。

2. CSV クラスのソースファイルのコメントの内容と実際の動作が異なっているわけですが、
これはコメントが間違ってるのでしょうか? それとも動作がおかしいのでしょうか?
(こういうのはバグ報告した方がいいのでしょうか。。)

以上 2 点、ご存知の方がいらっしゃいましたらお願いします。
# ruby-dev に投げたほうがいいような気もしましたが、とりあえずこちらに

-- 
信岡 ゆう (NOBUOKA Yu)

In This Thread