CSV.table では日本語のヘッダは表示されない

Ruby の CSV.table メソッド

Ruby で CSV を扱う際に、CSV.table メソッドは便利です。

しかし……

しかしながら、一つだけ*1注意点があります。それは、「日本語のヘッダは表示されない*2」ということです*3

実例

ヘッダが日本語の場合

以下のようなhello_world.csvという CSVファイル を用意したとします。

"英語","日本語"
"Hello, World!","こんにちは、世界!"

そして以下のように、hello_world.rbという Ruby のコードを書きます。

require 'csv'

table = CSV.table('hello_world.csv')
puts table.headers

これを実行するとこうなります。

$ ruby hello_world.rb


$

ヘッダがアルファベットの場合

先ほどのhello_world.csvという CSVファイル を次のように書き換えます。ヘッダをアルファベットにします。

"English","Japanese"
"Hello, World!","こんにちは、世界!"

そして上で書いた、同じhello_world.rbを実行します。

$ ruby hello_world.rb 
english
japanese
$

ちゃんと表示されました*4

考察

*1:じゃないかもしれませんが

*2:文字列を取得できない

*3:2行目以降は日本語でも大丈夫

*4:大文字が小文字に変換されているのが気になりますが

*5:headersメソッドでは、当然その割り当てた名称が出てきます

Powered by はてなブログ