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')
スキルを使って、就職/転職/副業する時のサイト
プログラミングのスキルなどを、自分なりに高めた上で、
自分のスキルをアピールして就職や転職を行い、年収をあげるか、
副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。
まずはできる範囲で取り組むことで、
少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。