日本語版のExcelでCSVを作成するとShift-JIS(SJIS)で保存されるが、それを別のLinuxサーバー側のプログラムで読み込もうとすると、文字化けしてしまうことがよくある。
それは日本語版Windowsの標準文字コードがShift-JISであるのに対し、プログラム側は世界で最も使われているUTF-8を使用することが多いからだ。
サーバーにCSVファイルを渡す前に手動で文字コードを変更したり、プログラム側で変換するのはあまり効率的ではない。
そこで、Linuxのiconvコマンドを使って文字コードを変換する方法を紹介します。
Shift-JISからUTF-8へ変換
今回は、対象のCSVファイルをUTF-8に変換後、別のファイル名で出力する方法です。
iconv [その他オプション] -f [変換前の文字コード] -t [変換後の文字コード] [変換前のファイル名] > [変換後のファイル名]
上記を踏まえて以下に例を書きます。
変換できない場合は出力せずにスキップさせます。
iconv -c -f cp932 -t utf-8 data_sjis.csv > data_utf8.csv
「cp932」とはShift-JISのWindows拡張版らしいです。
Excelで作成したCSVならこっちの方が良いらしい(ここは調べてみてね!)
※Windows-31J(MS932)も同じようなものらしい
文字コードの問題って昔から大変ですよね。
早く全世界UTF-8に統一したら良いのに…
- Original:https://minory.org/linux-csv-encode.html
- Source:Minory
- Author:管理者