qDebug 输出 QString UTF-8 非 Ascii 符号,如 \uxxxx
qDebug outputs QString UTF-8 non-Ascii symbols as like \uxxxx
我正在尝试将 unicode 中的字符串 (QString) 转换为 utf-8。
qDebug 打印字符串如下:
"Fault code soap:Client: \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0441 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\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" 已完结
我假设变量 str 的类型为 QString。您的 readableStr 与 str 具有相同的内容。 UTF-8 是一种使用 8 位字符的 Unicode 字符串编码,可以存储在 QByteArray 中。 qDebug 使用一些特殊函数在控制台或调试缓冲区中显示字符串,以帮助您理解字符串的内容。如果将 QString 放入任何 GUI 元素中,您将看到预期的可读内容。
我不知道 Qt 邮件列表上的确切线程,但最近引入了这种行为,因为 qDebug 最初是为了调试对象的内部状态。非 ASCII 字符现在这样显示,大多数人似乎不喜欢,但负责的开发人员或维护人员希望保持这种方式。
我正在尝试将 unicode 中的字符串 (QString) 转换为 utf-8。
qDebug 打印字符串如下:
"Fault code soap:Client: \u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0441 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\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" 已完结
我假设变量 str 的类型为 QString。您的 readableStr 与 str 具有相同的内容。 UTF-8 是一种使用 8 位字符的 Unicode 字符串编码,可以存储在 QByteArray 中。 qDebug 使用一些特殊函数在控制台或调试缓冲区中显示字符串,以帮助您理解字符串的内容。如果将 QString 放入任何 GUI 元素中,您将看到预期的可读内容。
我不知道 Qt 邮件列表上的确切线程,但最近引入了这种行为,因为 qDebug 最初是为了调试对象的内部状态。非 ASCII 字符现在这样显示,大多数人似乎不喜欢,但负责的开发人员或维护人员希望保持这种方式。