今回はIntelliJ IDEAのコンソールの文字化けに対応した経緯を残していきたいと思います。
ググって出てきた解決方法を片っ端から試してみましたが解決とはならず、最後は自分で一応の解決に至りました。納得のいく解決ではありませんでしたが、コンソールの表示は改善されました。
簡単にですが環境は下記の通り。
- Windows10
- IntelliJ IDEA 2022.1 (Community Edition)
- Maven Version: 3.8.1
現象としてはこんな感じ。
それではどうぞー。
試した解決方法
それではコンソールの文字化け解決のために試した方法を書いていきます。
カスタムVMオプションにUTF-8でエンコードする設定を追加
解決方法を調べて最初に出てきたのがこれ。カスタムVMオプションに下記を追加するというもの。
-Dfile.encoding=UTF-8
[Help] → [Edit Custom VM Options]をクリックしてカスタムVMオプションを開いて追加するも直らず…
vmoptionsというファイルが複数存在したので、すべてのファイルに直接設定を追記してみたのですが改善される気配すらなし。
pom.xmlにUTF-8でエンコード設定を追加
次に見つけた解決方法は、pom.xmlを開いて下記を追記するというもの。残念ながら解決はしませんでした。
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>
ファイルエンコーディングをUTF-8に変更
[Ctrl] + [Alt] + [s] → [Editor] → [File Encodings]の設定をUTF-8に変更するという方法もダメ…
Mavenの設定でVM Optionsにエンコード設定を追加
[Ctrl] + [Alt] + [s] → [Build,Execution,Deployment] → [Build Tools] → [Maven] → [Runner]の[VM Options]にUTF-8の設定を追加。
-Dfile.encoding=GBK でいけるというブログもあったのですが、それでもダメ。
コンソール出力エンコーディングを選択する
公式サイトに下記の解決方法の記述があったのですが、それでも直らず。
【コンソール出力エンコーディングを選択する】
デフォルトでは、IntelliJ IDEA はシステムエンコーディングを使用してコンソール出力を表示します。
設定 / 環境設定ダイアログ(Ctrl+Alt+S)で、エディター | 一般 | コンソールを選択します。
デフォルトエンコードリストからデフォルトのエンコーディングを選択します。
変更を適用するには、OK をクリックします。公式サイトより
解決した方法はこれ
ファイルエンコーディングをSJISに変更
ここまでの方法を全部試して解決せず悩んでいたところふと気づいたことが…
ビルド前のJavaファイルはUTF-8なのですが、ビルド後のclassファイルはSJISになっているのです。classファイルがUTF-8で作られるようにできれば解決するのでは?と思い試行錯誤しましたが、どうしてもそれができない…
UTF-8は諦めて下の画像のように、[Ctrl] + [Alt] + [s] → [Editor] → [File Encodings]の設定をSJISに変更すると文字化けせずにコンソールに日本語を表示させることができました。
さいごに
IntelliJ IDEAのコンソールが文字化けを解決することができましたが、たかがこれだけのことに半日を費やしてしまった…
しかもUTF-8にはできなかったのが残念。でも自端末で学習等で使う分には問題ないので今回はこれで良しとしました。こんなことに時間をかけるのも勿体ないですから。とは言え半日もかけてしまったが…
コメント
おそらく私も全く同じ教材を使って勉強しており同じところで文字化けが発生したためコメントさせていただきます笑
自分もいろいろ試してみても治らなかったのですが、筆者さんの方法で文字化けは解決できました。
ありがとうございました!
コメントありがとうございます!
本の通りにやって文字化け発生しましたよね笑
解決できてよかったです!
超たすかりました
「-Dfile.encoding=UTF-8」を追加するだけでは不十分で、(この記事ではMavenを使ってるようですが)Gradleを使ってる場合はbuild.gradleに以下のようなオプションを追加しないといけないようです。
—————————-
// compileJavaタスクのエンコーディング
compileJava.options.encoding = ‘UTF-8’
// compileTestJavaタスクのエンコーディング
compileTestJava.options.encoding = ‘UTF-8’
// javadocタスクのエンコーディング
javadoc.options.encoding = ‘UTF-8’
—————————-
https://zenn.dev/lamrongol/scraps/d4d9f081e5ec86
JDKのバージョンを17にしないといけないようです。