我正在尝试将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/