バナー画像

Javaでプログラミングを行う際、ファイル関連処理などで文字コードを指定する必要があり、エンコードという言葉を聞いたことがある方も多いのではないでしょうか。

本記事では、Javaでのデフォルトエンコーディング確認方法から任意のエンコーディング指定方法まで初心者向けに解説していきます。

エンコードとエンコーディング


エンコード自体の意味合いとしては、データ形式の変換を指します。

文字エンコードは符号化方式によって変換内容が異なるため、文字コードを指定する必要があり、この変換作業を文字エンコーディングと呼んでいます。

文字エンコーディングの種類

文字エンコーディングでは、下記のようなコードが定番で利用されています。

定番文字コード
  • Shift-JIS
  • UTF-8:
  • EUC-JP
  • Unicode
  • ASCII

Javaでデフォルトエンコーディングを確認する方法


Javaでデフォルトエンコーディングを確認するには、「getProperty」メソッド利用することが出来ます。

file.encoding

Javaでは、file.encodingからプロパティを取得することで、開発環境のデフォルトエンコーディングが確認出来ます。

System.getProperty("file.encoding");

サンプル

筆者のMac環境でサンプル出力してみましょう。

public class Main {

	public static void main(String[] args) {
		System.out.println(System.getProperty("file.encoding"));
	}
}

出力結果が下記です。

UTF-8
ポテパンダの一言メモ

筆者環境では「UTF-8」が出力されましたが、それぞれの環境により出力されるデフォルトエンコーディングは異なる可能性があります。

Javaでエンコード指定のファイル書き込み


まずはJavaで文字エンコーディングを指定してファイル書き込み処理を確認していきましょう。

デフォルトエンコーディング

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class Main {

	public static void main(String[] args) {
		File file = new File("/Users/Shared/sample/default_encode.txt");
        
        try {
            PrintWriter pw = new PrintWriter(new BufferedWriter
                (new OutputStreamWriter(new FileOutputStream(file))));
            
            pw.println("ポテパン");
            System.out.println("ファイルに書き込みました。");
            
            pw.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
	}

実行すると、コンソールに「ファイルに書き込みました。」と出力され、10行目で指定したパスのファイルに書き込みが実施されます。

今回の場合、文字エンコーディングを指定していないため筆者環境ではデフォルトエンコーディングである「UTF-8」で書き込み処理が行われます。

エンコーディング指定で書き込み

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

public class Main {

	public static void main(String[] args) {
		File file = new File("/Users/Shared/sample/shift-jis_encode.txt");
        
        try {
            PrintWriter pw = new PrintWriter(new BufferedWriter
                (new OutputStreamWriter(new FileOutputStream(file),"Shift-JIS")));
            
            pw.println("ポテパン");
            System.out.println("ファイルに書き込みました。");
            
            pw.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
	}
}

14行目で「Shift-JIS」で書き込むように指定しています。

Javaでエンコード指定のファイル読み込み


続いて作成したファイルを読み込んで表示内容を確認してみましょう。

デフォルトでの読み込み

まずはShift-JIS指定で書き込んだファイルを文字エンコーディング指定なしで読み込んでみます。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) {
		File file = new File("/Users/Shared/sample/shift-jis_encode.txt");
        
        try {
        	BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        	String text;
        	while ((text = br.readLine()) != null) {
        	 System.out.println(text);
        	}
        	br.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
	}
}

実行結果が下記です。

�|�e�p��

Shift-JISで作成したファイルを文字エンコーディング指定なしで読み込むと、実行結果のように文字化けして表示されてしまっています。

文字エンコーディング指定での読み込み

同じくShift-JISで作成したファイルを今度は文字エンコーディングをShift-JISに指定して読み込んでみます。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) {
		File file = new File("/Users/Shared/sample/shift-jis_encode.txt");
        
        try {
        	BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "Shift-JIS"));
        	String text;
        	while ((text = br.readLine()) != null) {
        	 System.out.println(text);
        	}
        	br.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
	}
}

実行結果が下記です。

ポテパン

文字エンコーディングを指定したことにより、エンコード方式が一致して文字化けが解消されています。

さいごに: Javaプログラムで文字エンコードの基本を押さえよう


本記事では、Javaプログラムで意識する必要のある文字エンコードの基本情報についてご紹介してきました。

日本語の場合、様々な文字コードが利用されていることから度々文字化けによる問題が発生するため、Javaプログラマーにとっても文字エンコーディングの知識は最低限押さえておく必要があります。

文字化けが起きた際には今回ご紹介した方法を参考に、適切な文字エンコーディングを指定出来るよう学習を進めていきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。