0

文字データの読み取り/書き込みには Reader/Writer を使用し、バイナリ データの読み取り/書き込みには InputStream/OutputStream を使用する必要があることを読みました。また、Java の文字は 2 バイトです。次のプログラムがどのように機能するのか疑問に思っています。標準入力から文字を読み取り、それらを1バイトに格納して出力します。ここで、2バイト文字はどのように1バイトに収まりますか?

http://www.cafeaulait.org/course/week10/06.html

4

2 に答える 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 に答える