qDebug输出QString UTF-8非ascii符号,如uxxxx



我正在尝试将unicode中的字符串(QString)转换为utf-8。

qDebug打印这样的字符串:

"故障代码soap:客户端:u041Fu043Eu043Bu044Cu0437u043Eu0432 u0442u0435u043Bu044C u0442u0438 u0438u043Au0430u0442u043E u043E u04c u043Du0435 u043Du0430u0439u0434u0435u043D"

我尝试过使用QTextCodec这样,但它输出相同的不可读字符串:

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

我做错了什么?

编辑:

我想知道发生了什么,但它发生时,qDebug打印QString

以下代码

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

打印出:

"u0442u0435u0441u0442" тест тест

我不知道Qt邮件列表上的确切线程,但这种行为是最近引入的,因为qDebug最初是为了调试对象的内部状态。非ASCII字符现在是这样的,大多数人似乎不喜欢,但开发人员或维护人员希望保持这种方式。

我假设变量str的类型为QString。你的readableStr具有与str相同的内容。UTF-8是使用8位字符的Unicode字符串编码,可以存储在QByteArray中。qDebug使用一些特殊的函数在控制台或调试缓冲区中显示字符串,以帮助您理解字符串的内容。如果在任何GUI元素中放置QString,您将看到预期的可读内容。

相关内容

  • 没有找到相关文章

最新更新