以下のプログラムについては、デフォルトの文字セット - Javaの
package io.buffer;
import java.nio.charset.Charset;
public class TestCharSet {
public static void main(String[] args) {
// Print the default Charset
System.out.println("The default charset is: " + Charset.defaultCharset());
}
}
ファイルのエンコーディングのデフォルトの文字セットは、システムプロパティfile.encoding
に保たれています。ファイルエンコーディングのJVMのデフォルトの文字セットを変更するには、コマンドラインVMオプション-Dfile.encoding
を使用します。
の引数を持つプログラム:
> java -Dfile.encoding=UTF-8 TestCharSet
は出力が得られます。
The default charset is: UTF-8
の引数を持つプログラム:
> java -Dfile.encoding=ascii TestCharSet
は出力が得られます。
The default charset is: US-ASCII
なぜjava -Dfile.encoding=UTF-16 TestCharSet
が出力��
を出力するのですか?
それは出力全体ですか?その2人のキャラクターだけ? –
@TedHoppはい。出力全体はちょうどそれらの2文字です – overexchange
このように見て、3つのプログラムはシェル/ターミナル/プロンプトから実行され、それぞれが異なるエンコーディングを使用して出力するように指示しています。シェルのエンコーディングが同じに保たれていると仮定すると、実行の少なくとも2つ、おそらくすべてが間違っています。 @TedHoppが示唆しているように出力をファイルにパイプすると、それぞれがエンコードを知っているテキストファイルを生成するので、それらは正しくなります。 (大きな問題は、どうしてデフォルトのエンコーディングを使いこなすのですか?) –