Java18の対応

 

【原因】

Java18 では,デフォルト文字コードが「UTF-8」に変更されました.

javac コンパイル時に,オプションを指定しない場合,ソースコードを「UTF-8」として扱います.

(Java17以前のデフォルト文字コードは,OS依存で,Windowsは「SJIS」です.)

 

【エラー状況】

「SJIS」の入ったソースコードの場合,普通にコンパイルすると,以下の例ようなエラーになります.

> javac Xxxx.java

Xxxx.java:3: エラー: この文字(0x93)は、エンコーディングUTF-8にマップできません

  System.out.println("???{??");

(Xxxx.javaはソースコードのファイル名です.)

 

【対応・その1】

Java18である必要が無ければ,Java17以下にバージョンダウンする.

JDK等のインストール(PDF)(コンピュータプログラミングI / IIのページ)

 

【対応・その2】

プログラミングでは,サクラエディタ等で,ソースコードを「SJIS」で保存します.

そのため,Java18でコンパイルするためには,オプション指定が必要です.

javac -encoding SJIS Xxxx.java

 

このオプション指定を書かなくてもコンパイルできるようにするため,

次のバッチファイル(javac.bat)をダウンロードして,ソースコードを保存しているフォルダに置いてください.

javac.bat

 

使い方は,同じです.

javac Xxxx.java

「SJIS」のソースコードがコンパイルできれば,完了です.

 

 

(参考)バッチファイルの中身の説明

javac.exe -encoding SJIS %1 %2 %3 %4 %5 %6 %7 %8 %9

このバッチファイルでは,本来のjavac.exeを呼び出す前にオプション指定を追加しています.

 

20220915 Kohama