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

标签 c++ qt utf-8 qt4 qtcore

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

qDebug() << "ÑABCgÓ";

输出:(这里我什至无法输入正确的输出,有些垃圾在 Ã 和 Ã 之后丢失了) �ABCg�

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

(Qt:4.8.5/Ubuntu 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

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

关于c++ - qDebug() (UTF - 8) 的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183895/

相关文章:

c++ - 从扩展 ascii 到 utf 8 的转换

c++ - 从 boost::variant 构造 std::variant

c++ - 为什么没有准确的C++反编译器?

android - 比较android中的两个波斯字符串

c++ - 为什么 Qt Stylesheet "Foo:hover * {"总是适用?

c++ - Qt - 记住最后检查的单选按钮

ios - Xcode - UTF-8 字符串编码

c++ - 从 txt 文件 [C++] 中只读取用户名

c++ - Array initializer must be an initializer list 错误未显示

qt - 是否有任何Qt容器以逗号分隔的字符串形式返回其值?