4

簡単な例を考えてみましょう。

System.out.println("¬");
System.out.println((int)(('¬')));
System.out.println((char)170);

私が得る出力は次のとおりです(サンプルコードから順に):

¬
172
ª

なぜこれが発生するのですか?文字170のASCIIチャートを調べたところ、確かに。であることがわかりました¬。(Windowsの場合)Alt+ 170を実行すると、が得られ¬ます。

足りないものはありますか?

4

4 に答える 4

2

Javaの(内部)デフォルトの文字セットはUTF-16(Unicode)です。

170の10進数はAAの16進数であるため、あなたのキャラクターは女性の序数標識です。ここを参照してください。

プリミティブデータ型のドキュメントには、次のように記載されています。

char:charデータ型は単一の16ビットUnicode文字です。最小値は「\u0000」(または0)、最大値は「\ uffff」(または65,535を含む)です。

于 2012-11-29T12:13:48.350 に答える
0

いいえ。明示的に指定しない限り、JavaはUTFです。http://www.utf8-chartable.de/を見ると、ユニコードU + 00AC(== 172)が否定記号であり、ユニコードU + 00AA(== 170)が女性の序数であることがわかります。

乾杯、

于 2012-11-29T12:15:48.760 に答える
0

ASCII(Wikipedia)は128文字しかありません。

したがって、JavaはUnicode(通常は2バイトのUnicodeバリアント)を使用しますが、ある種の「拡張ASCII」テーブル(おそらくLatin-1 / ISO-8859-1文字セット)でテーブルを検索しています。

Unicode文字のリスト(ウィキペディア)は、Javaが行っていることと一致しています。

于 2012-11-29T12:16:40.347 に答える
0

本当にsystem.outに出力したい場合は、次のように同等のユニコードを使用してください。

   System.out.println("\u00AC");

お役に立てれば。

于 2012-11-29T12:29:06.240 に答える