qDebug()的输出错误(UTF - 8)

时间:2013-10-04 14:33:45

标签: c++ qt utf-8 qt4 qtcore

我正在尝试使用特殊字符::

存储字符串
qDebug() << "ÑABCgÓ";

输出:(这里我甚至无法输入正确的输出Ã&amp;Ã后丢失了一些垃圾) ÃABCgÃ

我怀疑有些UTF-8 / Latin1 / ASCII,但无法找到输出到控制台/文件的设置。我在代码中写的:“ÑABCgÓ”。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

的main.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处理来确保。

答案 1 :(得分:1)

试试这个:

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