Ruby/RailsでShift-JISから UTF-8の変換でエラーが起きた場合の対処方法
Railsで、Shift-JISのCSVをインポートした時に、エンコード周りでエラーがおきていた。
簡単に解決できるかと思ったが、ちょっと方法を試行錯誤したので、対応方法を残しておきます。
前提:使用データ等
CSVファイル:MacのExcelでCSVエクスポート
使っているシステム
Ubuntu
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04
Rails
$rails -v Rails 5.2.3
linuxのエンコードライブラリnkfが必要
インストール
$ apt-get install nkf
やりたかったこと
MacのExcelでCSVをエクスポート(Shift-JIS)
↓
CSVをインポート(Railsで使うMySQLはUTF-8)
ということを行おうとした際に、
うまく変換できずにエラーが起きていた。
これは結構ハマったので、メモしておきます。
エラー内容
ちなみに、Railsで表示されていたエラーはこういうの。
XXXX From Shift-JIS to UTF-8
XXXX : 特殊文字のコード
対応方法
以下の手順で対応した
- TMPファイルをコピー
- コピーファイルの文字コードをnkfコマンドで変換
- 変換したファイルをインポート
このような流れでやったが、以下の部分が重要。
FileUtils.cp(path,"/tmp/import.csv") system('nkf -w --cp932 /tmp/import.csv > /tmp/import_utf8.csv')
就職/転職に向けてスキルを高めるために
プログラミングのスキルを高めるために、
以下のサイトを参考にしてみてください。
おすすめ書籍
コメント一覧
コメントはまだありません。
コメントを残す