7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java21(18以上)×IntelliJ×Windows×UTF-8の環境下でコンソール出力結果が文字化けする

Last updated at Posted at 2024-04-14

事象

  • Java21でプログラムを動かした際にIntelliJのコンソールに出力した文字が文字化けする
  • IntelliJのコンソール(デフォルトはWindows Powershell)に限らず、コマンドプロンプトやGit Bashでも同様の事象が発生する
  • Java17以前ではこの事象は発生しない
  • 同じプログラムをLinux環境で実行した際には、この事象は発生しない

実施環境

  • OS Windows11
  • Java Amazon Corretto 21
  • IDE IntelliJ 2024.1 Community Edition(無料版)
  • プロダクトフレームワーク SpringBoot 3.2.4
  • プログラムのファイルエンコーディング UTF-8

結論

  • 以下解決手順の通りVM引数を追加することで文字化け解消した

解決手順

  • IntelliJのヘルプ>カスタムVM引数オプションの編集をクリック
  • ファイルidea64.exe.vmoptionsが開くので、以下の1行を追加
    • -Dfile.encoding=COMPAT

原因

  • Java18で加わった変更「JEP 400: UTF-8 by Default」の影響により、文字セットの指定をせずにファイルへの入出力を行うと、デフォルトではUTF-8で入出力されるようになり、文字コードがWindows-31であるWindows環境では文字化けが発生するようになった

他に試したこと

以下は解決手順にたどり着くまでに試したが効果がなかったこと

  • カスタムVMオプションに以下の引数を追加する
    • -Dfile.encoding=UTF-8
  • 以下のVM引数をシステム環境変数を指定
    • 変数名:JAVA_TOOL_OPTIONS
    • 値:-Dfile.encoding=UTF-8
  • CHCP コマンドを使用するとコマンドプロンプトで使用される文字コードを設定
7
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?