LoginSignup
0
0

More than 3 years have passed since last update.

UTF-8形式のCSVファイルをRailsのmodelにインポートする手順

Last updated at Posted at 2018-05-25

追記: nkf使えば、コマンドで一発で文字コード変換できます。

オンラインで公開されているUTF-8形式のCSVデータをmodelに入れたい

駅データがダウンロードできる「駅データ.jp

大変ありがてぇ

このデータをDBに入れたいと思ったのですが、utf-8の扱いで結構戸惑ったので、ここにまとめます。環境はwindowsです。

まず立ちはだかる、文字化けるん

MSのExcelで作業する場合、普通に開くと、、、

image.png

まずは、普通にExcelで編集できるようにしましょう。

非常に簡単で、一度メモ帳で開いて保存しなおすだけ。

「ファイルを右クリック」 => 「プログラムから開く」 => 「メモ帳」

これを上書き保存しておくだけであら不思議、見事Excelでも正しく表示されるようになります。

image.png

どうやら、一度メモ帳を介すことで"BOM"と呼ばれる文字コードを解釈するためのデータが、ファイルの先頭部分に付与されるようです。

これにより、ExcelでもUTF-8のファイルが正しく読み込めるようになります。

Excel上で、自分に都合の良いようにデータをいじります。

BOMありのまま、CSVをインポートする際の第二の罠

さてインポートするぞと思いまして。こちらの記事を参考にインポートする手はずを整え、さぁ行くぞ!

ArgumentError - invalid byte sequence in UTF-8

image.png

いやまたか!

utf-8むずいです。

どうやら、BOMが付いてると余計なデータが付与されてしまうため、エラーが出てくるそう。
これを取り除く必要があります。

そこで出てくるのがTeraPad!
神でした。

ここに詳しいことはあるので、参考にしながらTeraPadでBOMを取り除きます。

行うこととしては、
「再びメモ帳で開く」 => 「カンマ区切りで保存されていることを確認したら、それをコピー」 => 「TeraPadに貼り付け」 => 「保存」

「文字/改行コード指定保存」から、保存形式として「utf-8n」、改行コード「LF」を選びます。csv形式が保存の際のファイルの種類として選択できなかったので、ファイルの種類は「すべてのファイル」にして、file_name.csvとして保存しましょう。

これで、問題なくいけます。わーい

お疲れさまでした。これでもう、utf-8も怖くない

参考

全モデルで使えるシンプルなインポート機能を実装する
- 大変助かった。すごい楽にimportできます。

文字コードをUTF-8 BOMなし(UTF-8N)でファイル保存をする方法
- TeraPad神かよ。もうメモ帳は捨てます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0