LinuxでWindowsのCSVファイルをShift-JISからUTF-8に変換する方法


linux-csv-encode

日本語版のExcelでCSVを作成するとShift-JISSJIS)で保存されるが、それを別のLinuxサーバー側のプログラムで読み込もうとすると、文字化けしてしまうことがよくある。
それは日本語版Windowsの標準文字コードShift-JISであるのに対し、プログラム側は世界で最も使われているUTF-8を使用することが多いからだ。

今回は「UTF-8」を中心に、文字コードの基礎と各ブラウザでの確認方法をご紹介します。文字コードの存在は知っているけれど詳しくは知らないという方は、この機会に基礎知識を身に付けてみてください。
文字コードって何だ!? 世界で最もポピュラーな文字コード「UTF-8」とその仕組み... - ferret [フェレット]
サーバーにCSVファイルを渡す前に手動で文字コードを変更したり、プログラム側で変換するのはあまり効率的ではない。
そこで、Linuxiconvコマンドを使って文字コード変換する方法を紹介します。

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-JISWindows拡張版らしいです。
Excelで作成したCSVならこっちの方が良いらしい(ここは調べてみてね!)
※Windows-31J(MS932)も同じようなものらしい

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「iconv」コマンドです。
【 iconv 】コマンド――文字コードを変換する - @IT

文字コードの問題って昔から大変ですよね。
早く全世界UTF-8に統一したら良いのに…


コメント

このブログの人気の投稿

Linuxでファイルの改行コードLF⇔CRLFを変換する方法

RHEL 7でスタティック(静的)ルートを追加する4つの方法

SQLPlusでのOracleリモート接続とSQLファイルを実行する方法