以下はWindows版における例。以下をPrintEncode1.javaと保存して実行する。文字コードはシフトJISでもUTF-8でもどちらでもよい(1バイト文字しかないためどちらにしても同一のファイルになる)。
class PrintEncode1 {
public static void main(String[] args) {
System.out.println(System.getProperty("file.encoding"));
}
}
コンパイルおよび実行する。
>javac -version
javac 21
>java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment (build 21+35-2513)
OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)
>javac PrintEncode1.java
>java PrintEncode1
UTF-8
上記のバージョンでは、デフォルトの文字コードはUTF-8であることがわかる。
このバージョンではデフォルトはUTF-8であるが、ソースコードにシフトJISを使うことは可。以下をシフトJISでPrintEncode2.javaと保存して実行してみる。コンパイルには-encodingオプションを使いsjisを指定する。
class PrintEncode2 {
public static void main(String[] args) {
System.out.println("ABC123あいう");
}
}
コンパイルおよび実行する。
>javac -encoding sjis PrintEncode2.java
>java PrintEncode2
ABC123あいう
ソースコードはソフトJISだが、正しく動作していることがわかる。なお、UTF-8で強制的にコンパイルしようとすると、エラーが発生する。
>javac -encoding utf-8 PrintEncode2.java
PrintEncode2.java:3: エラー: この文字(0x82)は、エンコーディングutf-8にマップできません
System.out.println("ABC123??????");
^
PrintEncode2.java:3: エラー: この文字(0xA0)は、エンコーディングutf-8にマップできません
System.out.println("ABC123??????");
^
(以下、表示省略)