【Windows】Intellij のターミナルの文字化けを直す方法

当ページのリンクには広告が含まれています。

しばらく文字化けが直らないなぁと思って放置していましたが、きちんと状況を整理しつつ、原因と対応策を確認していきました。

結果、複数の発生状況がありうることがわかりました。本記事ではそれぞれの発生状況と解決策についてまとめております。

目次

環境

  • 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を指定する

    3. (補足)COMAPTを指定するのはどういう場合か?

    COMAPTを指定するという記事もありますが、これはJavaの文字コードの指定方法の1つです。

    Oracleの説明では以下のようにあります。

    COMPAT: デフォルトの文字セットは、JDK 17以前のリリースのように決定されます。

    JDK 17 以前では、file.encoding のデフォルト値は OS のロケール設定に依存 していました。しかし、JDK 18 以降では UTF-8 がデフォルト になりました。

    この変更により、従来のコードが想定通りに動作しない可能性があるため、JDK 18 以降では file.encoding=COMPAT という特別な設定を導入しました。

    Oracle の説明にある 「JDK 17 以前のリリースのように決定されます。」 というのは、以下のような動作を意味します。

    1. COMPAT を指定すると、JDK 17 以前のように OS のロケールに基づいたエンコーディング が使用されます。
      • 例えば、日本語環境(Windows)なら MS932、英語環境(Linux)なら ISO-8859-1 などになります。
      • JDK 18以降 のデフォルト(UTF-8)とは異なる動作になります。
    2. file.encodingCOMPAT に設定しない場合(デフォルトの場合)、JDK 18 以降は常に UTF-8 が使用されます。

    もし、Java 17 以前の動作にするにはCOMPAT を指定する必要があります

    ビルドツールの文字コードの問題

    原因

    使っているビルドツールの文字コードが合っていない。

    ビルドツール実行時に文字化けする。

    解決策

    管理人の場合はMavenを使っているのでその設定方法です。

    pom.xmlに文字コードの設定を入れる。

    ターミナルの文字コードの問題

    管理人の場合はこちらが原因でした。

    原因

    IntelliJ内で使っているターミナル(Git Bash)の文字コードが合っていない。

    ターミナル上でシェルを使ったりすると文字化けする。

    解決策

    1.現在の文字コードを確認

        Windows環境であれば大抵、Active code page: 932(Shift-JIS)となっている。

        2. 文字コードをUTF-8に変更する

          3. これだけだとIDEを再起動するとリセットされるので、設定ファイルに初期設定を追記する。

          .bashrc ファイルに以下を追記します。

            .bashrc ファイルはユーザディレクトリに存在します。もし存在しない場合は新規作成してください。

            .bashrc ファイルの場所: C:\Users\<ユーザ名>

            まとめ

            • 文字化けになるケースから何が原因かを特定する。
            • 各ケースに応じた解決策を当てる。

            参考

            最後までお読み頂き、ありがとうございました!
            ご意見・ご要望がありましたら、遠慮なくコメント下さい!

            よかったらシェアしてね!
            • URLをコピーしました!
            • URLをコピーしました!

            この記事を書いた人

            リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰。
            現在はフリーランスエンジニア兼コアファクトリ合同会社代表。
            得意な言語はJava。

            新人教育経験あり(わからなくて進まない子を放置しない方針)
            Javaの新人教育にお困りでしたらお声がけください。

            ■保有資格
            ・Java Gold SE 11

            コメント

            コメントする

            CAPTCHA


            目次