文字データの読み取り/書き込みには Reader/Writer を使用し、バイナリ データの読み取り/書き込みには InputStream/OutputStream を使用する必要があることを読みました。また、Java の文字は 2 バイトです。次のプログラムがどのように機能するのか疑問に思っています。標準入力から文字を読み取り、それらを1バイトに格納して出力します。ここで、2バイト文字はどのように1バイトに収まりますか?
質問する
1461 次
2 に答える
6
コメントはそれをかなり明確に説明しています:
// Notice that although a byte is read, an int
// with value between 0 and 255 is returned.
// Then this is converted to an ISO Latin-1 char
// in the same range before being printed.
基本的に、これは着信バイトが ISO-8859-1 の文字を表していると想定しています。
別のエンコーディングのコンソールを使用したり、 ISO-8859-1 にない文字を提供したりすると、問題が発生します。
基本的に、これは良いコードではありません。
于 2013-01-31T21:39:21.300 に答える
1
Java は文字を 2 バイトとして格納しますが、通常の ASCII 文字の場合、実際のデータは 1 バイトに収まります。したがって、読み取られるファイルがASCIIであると想定できる限り、文字の実際の数値は1バイトに収まるため、問題なく機能します。
于 2013-01-31T21:39:48.037 に答える