動かして覚える山

エンジニアリング関連のことについて色々書いていきます。これは、自分が何ができるかを外部に公開すること。アウトプットの場にすること。他のエンジニアの参考になるものを投稿すること。自分用のメモとしてなどを目的として書いています。ですので、投稿の頻度や質は今の所まばらです。

javaで日本語を使用するときの文字化けの解決方法

$>java HelloWorld
????????

対象環境

検証環境

  • windows10
  • jdk-13.0.2
  • IntelliJ IDEA Community Edition 2019.3.1

文字化けしないようにチェックするポイント

準備.想定するソースコード

文字コードUTF-8として書かれたコード

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 というのもあるので、編集するファイルを間違えないように。)