初投稿なので簡素な記事を書きます。
ファイルの文字コードをnkfコマンドで変換し、
Linux上で正常にファイル閲覧できるようにします。
実施環境
・OSはLinux Mint15を利用して実施しています。
・以下の国土交通省サイトからダウンロードできるCSVファイルを使用します。
手順
1.CSVファイルをLinuxサーバ上にダウンロード
上記サイトからfacility.csvをダウンロードします。
歩行空間ネットワークデータ(csv形式)という欄です。
2.該当ファイルの中身をheadコマンド等で確認
以下のコマンドをCUI画面上で実行します。
実行する際は相対パスもしくは絶対パスでの指定をします。
$ head facility.csv
すると以下のような文字化けしたデータが表示されます。
user@servername ~/ダウンロード/65/177 $ head facility.csv
facil_id,facil_type,evacuation,temporary,name_ja,name_en,address,tel,lat,lon,floors,toilet,elevator,escalator,parking,barrier,nursing,brail_tile,info,info_board
00001B000000000309CB7D265EB2FFC1,1,0,0,�a�J����X��,99,�����s�a�J�����1-21-1,03-3461-9919,35.662071,139.700606,1,0,0,0,0,0,0,0,1,0
3.文字コード設定の確認
続けて以下のコマンドを実行してLinuxでの文字コード設定を確認します。
現在の設定はUTF-8と表示されます。
$ env | grep LANG
LANG=ja_JP.UTF-8
4.nkfコマンドでCSVファイルの文字コード確認
nkfコマンドのgオプションを使用してCSVファイルの文字コードを確認します。
Shift_JISと表示され、Linux上の設定と異なっているために文字化けしていることがわかります。
$ nkf -g facility.csv
Shift_JIS
補足:Homebrewを利用する
nkfが使用できなかった場合は以下のコマンドでHomebrewでnkfコマンドをインストールします。
$ brew install nkf
インストール後に再度gオプションで文字コード確認をします。
5.文字コードの変換
nkfコマンドのwオプションでCSVファイルの文字コードをUTF-8に変換します。
その後再度gオプションで文字コード設定が変換できているか確認します。
$ nkf -w facility.csv > facility_Utf8.csv
$ nkf -g facility_Utf8.csv
UTF-8
以上の手順後、変換したfacility_Utf8.csvをhead等で閲覧すると文字化けが直っています。
user@servername ~/ダウンロード/65/177 $ head facility_Utf8.csv
facil_id,facil_type,evacuation,temporary,name_ja,name_en,address,tel,lat,lon,floors,toilet,elevator,escalator,parking,barrier,nursing,brail_tile,info,info_board
00001B000000000309CB7D265EB2FFC1,1,0,0,渋谷神南郵便局,99,東京都渋谷区神南1-21-1,03-3461-9919,35.662071,139.700606,1,0,0,0,0,0,0,0,1,0
00001B000000000309CBAC265E6E7FC1,1,0,0,放送センター内郵便局,99,東京都渋谷区神南2-2-1,03-3467-0475,35.664682,139.696801,1,0,0,0,0,1,0,0,1,0
00001B000000000309CBE9A65DFB7FC1,1,0,0,渋谷富ケ谷一郵便局,99,東京都渋谷区富ヶ谷1-9-17,03-3467
まとめ
文字化けのトラブルはWindowsやLinuxなどの複合環境や
外国語対応したアプリケーションのCSVデータを取り扱う際に
よく出会ってしまいますので、知っておくと便利です。