Разница между символом и преобразованием байтового потока в символ для символов, которые могут быть представлены 1 байтом - PullRequest
0 голосов
/ 09 апреля 2020

Из java документации Здесь . Здесь говорится:

Поток символов использует поток байтов для выполнения физического ввода-вывода, , в то время как поток символов обрабатывает перевод между символами и байтами

Как это происходит, когда класс потока символов read() и write() байтов (2), как и класс байтового потока делает, но по одному за раз, и все они возвращают целочисленных типов , которые могут быть сопоставлены с char .

  • Предполагается, что для всех символов, которые можно закодировать с помощью 1 байта

  • Что такое специальный перевод здесь , кроме количества байтов и чем он отличается от преобразование байтового потока в символ или что делает перевод между символом и байтом для байтового потока?

-

1 Ответ

0 голосов
/ 09 апреля 2020
  • Двоичные данные: byte, InputStream/OutputStream;
  • Текст (Unicode): String, char (UTF-16 2 байта) , Reader/Writer.

Это означает, что есть всегда должно быть преобразованием между ними, используя кодировку двоичных данных Charset.

Что раздражает:

  • InputStream.read() возвращает значение типа int: a byte или -1 = конец файла.

Однобайтовые кодировки, как это происходит в Windows, имеют одинаковые первые 128 символов в чистом 7-битовом ASCII, StandardCharsets.US_ASCII. Но они отличаются для оставшихся 128 байтов (греческий, русский, словакский, норвежский и так далее).

Java принял решение использовать Unicode для внутреннего использования, поэтому все сценарии могут быть объединены в одну строку.

Следовательно, всегда есть обращение. И строка никогда не должна использоваться для нетекстовых двоичных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...