✨
Java21 + Windowsにおける文字化け対策の設定のまとめ
Java21 + Windowsにおける文字化け対策の設定について整理しました。
Java8についてはこちら
以下のリポジトリに作成したMarkdownからの抜粋です。
もっと簡単な方法があればコメント頂けると助かります!
前提条件
- ソースコード、コンパイル時のエンコーディングはUTF-8とする
- 実行時の
file.encoding
はUTF-8とする
ソフトウェアバージョン
ソフトウェア | バージョン |
---|---|
Oracle JDK | 21.0.3+7-LTS-152 |
Gradle (wrapper) | 8.8 |
Maven (wrapper) | 3.9.6 |
IntelliJ IDEA | 2024.1.4 |
Eclipse (Pleiades) | 4.32.0 |
Windows 11 Pro | 22631.3810 |
cmd | 22631.3810 |
Windows PowerShell | 5.1.22621.3810 |
PowerShell 7 | 7.4.3 |
結論
Java21の場合は以下を設定しておく。
※wrapperで起動した際にchcp 65001
させることで解決した。
wrapperのバッチファイルはコミット対象のファイルなのでメンバーに簡単に設定を共有できる。
※Gradleはかなり面倒……。
Gradle
-
gradle.properties
org.gradle.jvmargs=-Dfile.encoding=UTF-8
-
build.gradle.kts
val encodingJvmArgs = listOf( "-Dfile.encoding=UTF-8", "-Dsun.stdout.encoding=UTF-8", "-Dsun.stderr.encoding=UTF-8", "-Dstdout.encoding=UTF-8", "-Dstderr.encoding=UTF-8", ) tasks.withType<JavaExec> { // JavaExec型のタスクのVM引数にエンコーディング関連のプロパティを追加する jvmArgs(encodingJvmArgs) } tasks.withType<JavaCompile> { options.encoding = "UTF-8" } tasks.javadoc { options.encoding = "UTF-8" } tasks.test { // テスト時のVM引数にエンコーディング関連のプロパティを追加する jvmArgs(encodingJvmArgs) ... } tasks.wrapper { // gradlew.batの先頭に"chcp 65001"を追加する // powershellの場合もgradlew.batから実行する限りはこれで対応できる doLast { val charset = Charset.forName("MS932") val gradlewBat = file("gradlew.bat") gradlewBat.writeText("@echo off & chcp 65001 & @echo on\r\n" + gradlewBat.readText(charset), charset) } }
-
gradlew.bat
@echo off & chcp 65001 & @echo on @rem @rem Copyright 2015 the original author or authors. ...
Maven
-
.mvn/jvm.config
-Dfile.encoding=UTF-8
-
pom.xml
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>3.1.2</version> <configuration> <argLine>-Dfile.encoding=UTF-8</argLine>
-
mvnw.cmd
<# : batch portion @echo off & chcp 65001 & @echo on @REM ---------------------------------------------------------------------------- ...
IntelliJ IDEA
- IntelliJ IDEA - VMカスタムオプション
-Dfile.encoding=UTF-8
Eclipse
- Eclipse - eclipse.ini
-Dfile.encoding=UTF-8
検証内容のログ
以下のリポジトリのjava21.mdをご確認ください。
https://github.com/leoninja256/java-garbled-verification/blob/main/java21.md
以上。
Discussion