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

qDebug打印这样的字符串:


  “故障代码肥皂:客户端:\ u041F \ u043E \ u043B \ u044C \ u0437 \ u043E \ u0432 \ u0430 \ u0442 \ u0435 \ u043B \ u044C \ u0441 \ u0438 \ u0434 \ u0435 \ u043D \ u043D \ u0442 \ u0438 \ u0444 \ u0435 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”тесттест

最佳答案

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

关于c++ - qDebug输出QString UTF-8非Ascii符号,如\uxxxx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31808233/

10-09 06:34