Проблемы с чтением специальных символов (Java) - PullRequest
3 голосов
/ 20 января 2011

Я делаю чат-клиент, который использует специальное шифрование. У него проблема с чтением букв типа «, ƒ, ̕ из входного буфера.

Я читаю их в байтовый массив, и я попытался использовать

Connection.getInputStream().read();

А также используя

BufferedReader myInput = new BufferedReader(
    new InputStreamReader(Connection.getInputStream()));

Но, похоже, проблема в том, что они отображаются в виде квадратных полей.

Ответы [ 4 ]

4 голосов
/ 20 января 2011

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

Вы также должны убедиться, что шрифт, который вы используете для отображения символов, поддерживает ваши специальные символы.

4 голосов
/ 20 января 2011

Установите правильную кодировку в потоке с помощью new InputStreamReader(..,"utf-8") или любого другого введенного вами значения.

0 голосов
/ 21 февраля 2012

Преобразование байтового массива в строку с указанием набора символов.

String data = new String(byte[], "UTF-8");

убедитесь, что отображаемый шрифт поддерживает UTF-8 или указанную кодировку кодировки.

0 голосов
/ 20 января 2011

Вы можете попробовать использовать DataInputStream и метод readChar ().

  DataInputStream in = new DataInputStream(myinput);
  //where muinput is your BufferedInputStream.

  char c = in.readChar();

должен делать то, что вы хотите.

...