javaでsjisなどの文字コードのファイルをutf8にコンバートするユーティリティーを作成してみよう。
準備
まずは文字コードがShift-JISで保存されている。以下のcsvファイルをダウンロードする。
sample.csv
作成
今回は黒い画面で作業を行おう。ターミナルを開き以下のコマンドを入力して行こう。
なおターミナルはMacはbash,Winはgitbashを前提としている。
1.デスクトップにencodingconverterフォルダを作成する。
$ mkdir ~/Desktop/encodingconverter
2.そこに移動しよう
$ cd ~/Desktop/encodingconverter
3.先程ダウンロードしたファイルをここに持ってこよう(sample.csvの後ろに半角スペースがあることに注意)
$ mv ~/Downloads/sample.csv ./
4.確認しよう。
$ ls
以下のようにsample.csvが表示されれば成功だ。
5.中身を確認してみよう。
$ vi sample.csv
UTF-8環境でShift-JISファイルを開いたので文字化けしている。
6.JavaでConverterを作成しよう。
$ vi Converter.java
以下のように作成する。これは文字コードがSJISのファイルをUTF-8に変換し
new_ファイル名
として保存するものだ。
import java.io.*;
public class Converter {
public static void main(String[] args) throws IOException{
final String FROM = "SJIS";
final String TO ="UTF8";
if(args.length == 0) {
System.out.println("実行時にファイル名を指定してください");
return;
}
FileInputStream fis=new FileInputStream(args[0]);
InputStreamReader isr=new InputStreamReader(fis,FROM);
BufferedReader br=new BufferedReader(isr);
FileOutputStream fos=new FileOutputStream("new_"+args[0]);
OutputStreamWriter osw=new OutputStreamWriter(fos,TO);
BufferedWriter bw=new BufferedWriter(osw);
String line;
while((line =br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
}
}
7.作成したファイルをコンパイルしよう。
$ javac Converter.java
8.このアプリは実行時に変換したいファイルを実行時引数で指定する。以下のように入力しよう。
$ java Converter sample.csv
うまくいっただろうか?ファイルが出来ているか確認してみよう。
$ ls
確かにファイルが作成されている!
9.最後にファイルの中身を確認してみよう。
$ vi new_sample.csv
ファイルがUTF-8に変換され、きちんと表示された。
最後に
Javaのファイル読み込み機能と書き込み機能を使ってエンコーディング変換ユーティリティーが作成できた。javaコード中のFROMとTOを書き換えることでどんなエンコーディングでも好きなエンコーディングに変換できる。
(Javaエンコード対応表)
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/intl/encoding.doc.html
Javaの学習が進んだらこうしたお役立ちツールを作ってみるのもよいだろう。
コメント