Java Windowsのコマンドプロンプトで日本語が文字化けする場合の対処法

photo of person typing on computer keyboard

Javaで作成したコンソールアプリケーションをWindowsのコマンドプロンプトもしくはPowe Shellで実行すると、日本語の文字出力が文字化けする場合があります。文字化けの原因と対処法について紹介します.

目次

原因

JavaのソースコードとWindowsのコマンドプロンプト、Power Shellの文字コードに差異があるためです。

  • JavaのソースコードがUTF-8で書かれている
  • Windowsのコマンドプロンプト、Power Shellのターミナルは文字コードがSJISになっている。

対処法

対処法としては、両方の文字コードを一致させることで問題は解決します。

  • 対処法1 Javaのプログラムのコンパイルと入出力の文字コードをSJISに変更する
  • 対処法2 Windowsのコマンドプロンプト、Power Shellの文字コードをUTF-8に変更する

文字コードの確認

Javaプログラムの文字コードの確認

Mavenのpom.xmlには以下のように記述があります。JavaのプログラムはUTF-8でコンパイルするようにエンコード指定されています。

<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Windowsターミナルの文字コードの確認

ターミナルで以下のコマンドを実行します。932はSJISです。

> chcp
現在のコード ページ: 932

【対処法2】Windowsのコマンドプロンプトの文字コードを変更する

本ページではJavaのプログラムはUTF-8のままとし、Windowsのコマンドプロンプトの文字コードを変更するする対処法を紹介します。

以下のコマンドで文字コードをUTF-8に変更出来ます。65001はUTF-8の文字コードです。

> chcp 65001
Active code page: 65001

なお、Power Shellで同様に文字コードを変更しても文字化けが解消されませんでした。JavaとPowe Shellの相性の問題な気がします。

WindowsのPower ShellでJavaのコンソールプログラムを実行する機会も多くはないこと、コマンドプロンプトで代用出来ることからPower Shellでの文字化けは諦めます。

よかったらシェアしてね!
目次