qDebug() 的錯誤輸出 (UTF - 8)

Wrong output of qDebug() (UTF - 8)

本文关键字:UTF qDebug      更新时间:2023-10-16

>我正在尝试存储带有特殊字符的字符串::

qDebug() << "ÑABCgÓ";
输出

:(在这里我什至无法输入正确的输出,在 Ã &Ã 之后缺少一些垃圾)ÃABCgÃ

我怀疑一些 UTF-8/拉丁语1/ASCII,但找不到要输出到控制台/文件的设置。我在代码中写的:"ÑABCgÓ"。

(Qt:4.8.5/Ubunto 12.04/C++98)

您可以使用

QString QString::fromUtf8(const char * str, int size = -1) [static],因为下面的示例代码如下所示。这是QString存在的主要原因之一。

有关详细信息,请参阅文档:

http://qt-project.org/doc/qt-5.1/qtcore/qstring.html#fromUtf8

主.cpp

#include <QString>
#include <QDebug>
int main()
{
    qDebug() << QString::fromUtf8("ÑABCgÓ");
    return 0;
}

生成(针对你的方案进行自定义)

g++ -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main1000.cpp && ./a.out

输出

"ÑABCgÓ"

话虽如此,根据您的区域设置,简单地qDebug() << "ÑABCgÓ";可以像这里一样工作,但建议通过明确询问 UTF-8 处理来确保。

试试这个:

 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
 QTextCodec::setCodecForCStrings(codec);
 qDebug() << "ÑABCgÓ";