私は同様の問題を見つけることができなかったので、ここに行きます:
QStringをQLocalSocketから2つのアプリケーションを介してQLocalServerに送信しています。受信(QLocalServer)アプリケーションはメッセージを受信しますが、エンコーディングが完全に間違っているようです。
QLocalSocket(クライアント)からQString = "x"を送信すると、QLocalServerに外部(中国語?)シンボルが表示されます。私のコードは文字通りNokiaDeveloperのWebサイトからコピーされています
QDebugを介してメッセージを印刷すると、「??」が表示されます。メッセージボックスで起動すると漢字が印刷されます。受信したメッセージをUTF-8、Latin1などに再エンコードしようとしましたが、うまくいきませんでした。
コードは次のとおりです。
//Client
int main(int argc, char *argv[])
{
QLocalSocket * m_socket = new QLocalSocket();
m_socket->connectToServer("SomeServer");
if(m_socket->waitForConnected(1000))
{
//send a message to the server
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_7);
out << "x";
out.device()->seek(0);
m_socket->write(block);
m_socket->flush();
QMessageBox box;
box.setText("mesage has been sent");
box.exec();
...
}
//Server - this is within a QMainWindow
void MainWindow::messageReceived()
{
QLocalSocket *clientConnection = m_pServer->nextPendingConnection();
while (clientConnection->bytesAvailable() < (int)sizeof(quint32))
clientConnection->waitForReadyRead();
connect(clientConnection, SIGNAL(disconnected()),
clientConnection, SLOT(deleteLater()));
QDataStream in(clientConnection);
in.setVersion(QDataStream::Qt_4_7);
if (clientConnection->bytesAvailable() < (int)sizeof(quint16)) {
return;
}
QString message;
in >> message;
QMessageBox box;
box.setText(QString(message));
box.exec();
}
どんな助けでも大歓迎です。