4

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

qDebug() << "ÑABCgÓ";

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

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

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

4

2 回答 2

4

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

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

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

主文件

#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 处理来确保。

于 2013-10-04T19:05:26.133 回答
1

试试这个:

 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
 QTextCodec::setCodecForCStrings(codec);
 qDebug() << "ÑABCgÓ";
于 2013-10-04T14:40:00.823 回答