2011年4月15日

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

信岡です。
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)


投稿者 xml-rpc : 2011年4月15日 16:37
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/103117
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。