Я прочитал от TCP/IP сокет s:Java байт для преобразования Char
byte[] bbuf = new byte[30];
s.getInputStream().read(bbuf);
for (int i = 0; i < bbuf.length; i++)
{
System.out.println(Integer.toHexString((int) (bbuf[i] & 0xff)));
}
Это выводит CA 68 9F 75, который является то, что я бы ожидать. Теперь я хочу, чтобы использовать символы вместо
char[] cbuf = new char[30];
BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (int i = 0; i < cbuf.length; i++)
{
System.out.println(Integer.toHexString((int) (cbuf[i])));
}
Теперь выхода является CA 68 178 75. Таким образом, третьи байты (и только третьи байты) делают разницу. Я предполагаю, что это связано с наборами символов и что я должен указать набор символов в InputStreamer. Я не знаю, как узнать, какой набор символов я должен использовать. Во-вторых, я удивлен, если из-за наборов символов я получаю беспорядок только с одним символом. Я пробовал все другие персонажи, но это, похоже, единственное, что я смог найти.
Кто может решить эту тайну?
Вам необходимо знать, как символы были закодированы. Я бы попробовал 'UTF-8' вместо вашей кодировки по умолчанию, чтобы начать с. –