qDebug() 的錯誤輸出 (UTF - 8)
Wrong output of qDebug() (UTF - 8)
>我正在尝试存储带有特殊字符的字符串::
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Ó";
相关文章:
- HEX值到wchar_t字符(UTF-8)的转换
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 转换特殊字符(UTF-8)
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 如何使用 C++将 ISO-2022-KR 编码转换为 UTF-8 编码?
- 在C++中使用 UTF-8 字符串和字符
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 将C++ std::string 转换为 UTF-16-LE 编码的字符串
- 在基于英语的系统上将 UTF-8 路径转换为宽字符会引发异常
- C++ 将 UTF-8 转换为字符串
- 从/到 UTF-8/UTF-16 的转换需要(例如:utf8 -> 代码点,然后代码点到 utf16)或(例如:utf8 -> utf16)?
- 通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
- 一种从内存中删除 UTF 字节的方法?
- 如何让qDebug编写方法和类名?
- "C.UTF-8" C++ Windows 上的语言环境?
- 无法将字符数组转换为包含 utf-8 字符的字符串
- 从 UTF-8 字节数组创建字符串?
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- qDebug() 的錯誤輸出 (UTF - 8)
- qDebug输出QString UTF-8非ascii符号,如uxxxx