しばらく文字化けが直らないなぁと思って放置していましたが、きちんと状況を整理しつつ、原因と対応策を確認していきました。
結果、複数の発生状況がありうることがわかりました。本記事ではそれぞれの発生状況と解決策についてまとめております。
環境
- Windows 11
- IntelliJ IDEA 2024.3.2.2 (Community Edition)
- Java21(Amazon corretto 21.02)
- Maven
IntelliJの文字コードの問題

原因
単純にIntelliJの文字コードが合っていない。
System.out.printlntなどで文字化けする。
解決策
カスタムVM引数オプションに文字コードを指定する。
1. ヘルプ > カスタムVMオプション を開く
2. UTF-8を指定する
1 2 3 |
-Dfile.encoding=UTF-8 |
3. (補足)COMAPTを指定するのはどういう場合か?
COMAPTを指定するという記事もありますが、これはJavaの文字コードの指定方法の1つです。
1 2 3 |
-Dfile.encoding=COMAPT |
Oracleの説明では以下のようにあります。
COMPAT
: デフォルトの文字セットは、JDK 17以前のリリースのように決定されます。
JDK 17 以前では、file.encoding
のデフォルト値は OS のロケール設定に依存 していました。しかし、JDK 18 以降では UTF-8 がデフォルト になりました。
この変更により、従来のコードが想定通りに動作しない可能性があるため、JDK 18 以降では file.encoding=COMPAT
という特別な設定を導入しました。
Oracle の説明にある 「JDK 17 以前のリリースのように決定されます。」 というのは、以下のような動作を意味します。
COMPAT
を指定すると、JDK 17 以前のように OS のロケールに基づいたエンコーディング が使用されます。- 例えば、日本語環境(Windows)なら
MS932
、英語環境(Linux)ならISO-8859-1
などになります。 - JDK 18以降 のデフォルト(UTF-8)とは異なる動作になります。
- 例えば、日本語環境(Windows)なら
file.encoding
をCOMPAT
に設定しない場合(デフォルトの場合)、JDK 18 以降は常に UTF-8 が使用されます。
もし、Java 17 以前の動作にするにはCOMPAT
を指定する必要があります。
ビルドツールの文字コードの問題

原因
使っているビルドツールの文字コードが合っていない。
ビルドツール実行時に文字化けする。
解決策
管理人の場合はMavenを使っているのでその設定方法です。
pom.xmlに文字コードの設定を入れる。
1 2 3 4 5 |
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> |
ターミナルの文字コードの問題

管理人の場合はこちらが原因でした。
原因
IntelliJ内で使っているターミナル(Git Bash)の文字コードが合っていない。
ターミナル上でシェルを使ったりすると文字化けする。
解決策
1.現在の文字コードを確認
1 2 3 |
chcp.com |
Windows環境であれば大抵、Active code page: 932
(Shift-JIS)となっている。
2. 文字コードをUTF-8に変更する
1 2 3 |
chcp.com 65001 |
3. これだけだとIDEを再起動するとリセットされるので、設定ファイルに初期設定を追記する。
.bashrc
ファイルに以下を追記します。
1 2 3 |
chcp.com 65001 |
.bashrc
ファイルはユーザディレクトリに存在します。もし存在しない場合は新規作成してください。
.bashrc ファイルの場所: C:\Users\<ユーザ名>
まとめ
- 文字化けになるケースから何が原因かを特定する。
- 各ケースに応じた解決策を当てる。
参考
- Git Bash で日本語が文字化けする
- Java21(18以上)×IntelliJ×Windows×UTF-8の環境下でコンソール出力結果が文字化けする
- Mavenでのビルド時にソースの文字コードを指定する
- JDKのデフォルトの文字セットの変更
コメント