Java

2023年10月22日 (日)

[OpenJDK]ソースファイルの文字コードを指定してコンパイルする

-encodingオプションを使う。以下は、それぞれUTF-8、シフトJISを指定してコンパイルした例。

>javac -encoding utf-8 PrintText.java
>javac -encoding sjis PrintText.java

コンパイラでサポートされていない文字コードを指定すると、エラーが発生する。

>javac -encoding euc PrintEncode1.java
エラー: サポートされていないエンコーディングです: euc
エラー1個

2023年10月19日 (木)

[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??????");
^
(以下、表示省略)

2014年4月 8日 (火)

[Java]Ubuntu 13.10でJavaを使って数値計算を行う

Javaの開発環境は、パッケージdefault-jdkをインストールすればよい。

$ sudo apt-get install default-jdk

コンパイラがインストールされたかどうかの確認。

$ javac -version
javac 1.7.0_51