javaで日本語を使用するときの文字化けの解決方法
$>java HelloWorld ????????
対象環境
検証環境
文字化けしないようにチェックするポイント
準備.想定するソースコード
HelloWorld.java
public class HelloWorld { public static void main(String[] args) { System.out.println("こんにちは世界!"); } }
java のみを使う環境の場合
1. コンパイル時の文字コードを正しく指定する。
コンパイラにソースコードの文字コードを教えてあげて、正しくコンパイルする。
javac -encoding UTF-8 HelloWorld.java
2.実行時の文字コードを正しく指定する。
javaVMが正しい文字コードを使うようにする。
java -Dfile.encoding=UTF-8 HelloWorld
こんにちは世界!
memo.ソースコードの文字コードがSJISのとき、UTF-8でコンパイルしようとした場合エラー
間違った文字コードをコンパイラに指定した場合、unmappableエラーとなる。
javac -encoding UTF-8 HelloWorld.java HelloWorld.java:30: error: unmappable character (0x81) for encoding UTF-8 System.out.println("??????????E?I");
memo.javaVMに正しい文字コードを指定しなかった場合文字化け
java -Dfile.encoding=UTF-16 HelloWorld
S00k0a0oNuL
intellij,gradle,javaの場合
1.コンパイル時の文字コードを正しく設定する。
gradleを使用しした、コンパイル時、正しい文字コードを使用するようにbuild.gradleファイルに下記のコードを追記する。
build.gradle
compileJava.options.encoding = 'UTF-8' compileTestJava.options.encoding = 'UTF-8'
2.実行時の文字コードを正しく指定する
intellijが起動する実行環境javaVMの文字コードを正しく指定してあげる。
%USERPROFILE%.IdeaIC2019.3\config\idea64.exe.vmoptionsに追記
-Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8
(%PROGRAMFILES%\JetBrains\IntelliJ IDEA Community Edition 2019.3.1\bin\idea64.exe.vmoptions というのもあるので、編集するファイルを間違えないように。)