gpt4 book ai didi

java - 客户端字符串编码java

转载 作者:行者123 更新时间:2023-11-29 03:51:41 25 4
gpt4 key购买 nike

我和我的团队在解析从我们的服务器接收到的字符串时遇到了这个棘手的问题。服务器是在 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

我们使用了 string encode/decode tool 等工具尝试评估字符串的编码方式,但在每个配置上都失败。

我们不知道这是什么编码(如果有)或如何修复它。任何帮助将非常感激。

最佳答案

乍一看,将 QString 参数转换为 Utf8 QByteArray 然后再转换回 QString 的行似乎很奇怪:

QString text = response.toUtf8();

toUtf8()返回的QByteArray赋值给text时,我认为假设QByteArray 包含一个 Ascii (char*) 缓冲区。

关于java - 客户端字符串编码java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com