Моя команда и я столкнулись с этой неприятной проблемой при разборе строки, полученной с нашего сервера.Сервер - это довольно простая штука сокетов, выполненная в qt, вот функция sendData:
void sendData(QTcpSocket *client,QString response){
QString text = response.toUtf8();
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out << (quint32)0;
out << text;
out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32));
try{
client->write(block);
}
catch(...){...
Клиент находится на Java и тоже довольно стандартная штука сокетов, вот где мы сейчас находимся, попробовав много разныхСпособы расшифровки ответа от сервера:
Socket s;
try {
s = new Socket(URL, 1987);
PrintWriter output = new PrintWriter(s.getOutputStream(), true);
InputStreamReader inp = new InputStreamReader(s.getInputStream(), Charset.forName("UTF-8"));
BufferedReader rd = new BufferedReader( inp );
String st;
while ((st = rd.readLine()) != null){
System.out.println(st);
}...
Если с сервером установлено соединение, он отправляет строку «Send Handshake» с размером строки в байтах, отправленных перед ним, как показано в первомблок кода.Это уведомляет клиента о том, что он должен отправить аутентификацию на сервер.На данный момент строка, которую мы получаем от сервера, выглядит следующим образом: ������ ��������S��e��n��d�� ��H��a��n�*D��s��h��a��k��e
Мы использовали такие инструменты, как инструмент кодирования / декодирования строк , чтобы попытаться оценить, как строка кодируется, ноон не работает в каждой конфигурации.
У нас нет идей относительно того, что это за кодировка, если таковая имеется, или как ее исправить.Любая помощь приветствуется.