0

Unicode の文字列 (QString) を utf-8 に変換しようとしています。

qDebug は次のような文字列を出力します:

「障害コード ソープ: クライアント: \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0441 \u0438\u0434\u0435\u043D\u0442\u0438\u048\u048\u048 u043A\u0430\u0442\u043E\u0440\u043E\u043C \u00AB16163341545811\u00BB \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D"

私はこのように使ってみQTextCodecましたが、同じ読めない文字列を出力します:

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString readableStr = QString::fromUtf8(codec->fromUnicode(str));

私は何を間違っていますか?

編集:

何が起こっているのだろうと思いますが、qDebug印刷すると発生しますQString...

次のコード

qDebug() << QString::fromUtf8("тест") << "тест" << QString::fromUtf8("тест").toUtf8().data();

プリントアウト:

「\u0442\u0435\u0441\u0442」

4

2 に答える 2

1

Qtメーリングリストの正確なスレッドはわかりませんが、qDebugはもともとオブジェクトの内部状態をデバッグすることを目的としているため、この動作は最近導入されました。現在、非 ASCII 文字はこのように出力されますが、これはほとんどの人が嫌っているように見えますが、担当の開発者またはメンテナはこの方法を維持したいと考えています。

于 2015-08-10T22:45:58.093 に答える