オーダーメイドコース
icon
icon

Javaで文字コードを変換する方法【初心者向け】

初心者向けにJavaの文字コードの変換方法について解説しています。文字コードは、文字にあてられた数値のことです。ファイル読み込みの際に文字コードが一致しないと文字化けが起こるという不具合が発生します。文字コードの変換方法を実際に書きながら学習しましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

この記事では、Javaの文字コードの変換方法について解説します。

実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
 

なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

文字コードの変換方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

文字コードとは

コンピュータではすべての文字に対してコード(数値)が割り当てられています。

Javaの内部ではUTF-16という文字エンコーディングが使われており、例えば「3042」という文字コードは平仮名一文字の「あ」に、「3044」という文字コードは「い」に変換されます。

Javaでファイル読込を行う際、読み込むファイルの文字コードが別の文字コードだと読み込んだ時に文字化けしてしまいます。

この為、読み込むファイルの文字コードを指定し、読み込み時に変換を行う必要があります。

ファイル読込を実装する方法は多数ありますが、今回は文字コードはFileInputStream、InputStreamReader、BufferedReaderの3つのクラスを使って実装する方法の中で、文字コードの変換を行います。

 

文字コードの変換方法

文字コードの変換は、InputStreamReaderのインスタンスを作成する際に、コンストラクタの第二引数で文字コードを指定して行います。

 

[PR] 未経験からWebエンジニアを目指す方法とは

実際に書いてみよう

読み込み用のファイルを作成します。mojicode.txtというテキストファイルを作成し、内容を入力して保存します。内容はなんでもかまいません。保存の際に文字コードを選択して保存します。

今回はJISを選択しました。

ソースコード

public static void main(String[] args) {

  //ファイル読み込みで使用する3つのクラス
  FileInputStream fi = null;
  InputStreamReader is = null;
  BufferedReader br = null;

  try {

    //インスタンス生成
    //読み込みファイルのパスを記載する
    fi = new FileInputStream("mojicode.txt");

 

    //第二引数で読み込みファイルを保存した際に選択した文字コードを指定する
    is = new InputStreamReader(fi, "JIS");
    br = new BufferedReader(is);

    String tmp;

    //1行ずつ読み込み、出力する
    while ((tmp = br.readLine()) != null) {

      System.out.println(tmp);

    }

  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    try {
      br.close();
    } catch (Exception e) {
      e.printStackTrace();
    }

  }
}

実行し、作成したファイルの内容が正しく表示できていることを確認しましょう。

 

監修してくれたメンター

長屋雅美

独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。
JavaやC♯、shellscriptを用いた開発を主に担当し、TechAcademyではJavaコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でもJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。