[OpenJDK]プログラムの動作時のデフォルトの文字コードを調べる
以下は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??????");
^
(以下、表示省略)
« [R]ローカルレベルモデルによる体重の計測値に関する平滑化状態とその95%信頼区間(「カルマンフィルタ」(共立出版)p.33) | トップページ | [C#]文字列補間を使う(書式文字列を使って変数の値を利用して文字列を作成する) »
「Java」カテゴリの記事
- [OpenJDK]ソースファイルの文字コードを指定してコンパイルする(2023.10.22)
- [OpenJDK]プログラムの動作時のデフォルトの文字コードを調べる(2023.10.19)
- [Java]Ubuntu 13.10でJavaを使って数値計算を行う(2014.04.08)
« [R]ローカルレベルモデルによる体重の計測値に関する平滑化状態とその95%信頼区間(「カルマンフィルタ」(共立出版)p.33) | トップページ | [C#]文字列補間を使う(書式文字列を使って変数の値を利用して文字列を作成する) »

コメント