Javaでファイルの文字コードを変換するコンバーターを作成しよう。

Java

javaでsjisなどの文字コードのファイルをutf8にコンバートするユーティリティーを作成してみよう。

準備

まずは文字コードがShift-JISで保存されている。以下の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の学習が進んだらこうしたお役立ちツールを作ってみるのもよいだろう。

Java
スポンサーリンク
シェアする
mjpurinをフォローする
ジョイタスネット

コメント

タイトルとURLをコピーしました