gpt4 book ai didi

c++ - 如何使用 Qt 打印 unicode 字符?

转载 作者:行者123 更新时间:2023-11-28 08:10:30 25 4
gpt4 key购买 nike

我正在尝试做一些非常简单的事情,我只想在 Windows 控制台中打印我的母语 pt-br。

IDE 创造者我创建了一个新项目->other->Qt 控制台应用程序,我把它放在我的 main.cpp 文件中:

#include <QCoreApplication>
#include <QDebug>
#include <QTextCodec>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

qDebug() << "aeiou áéíóú";
std::cout << "aeiou áéíóú" << endl;

return 0;
}

这是我得到的:

C:\Users\maiko.costa\testeQtConsole\debug>testeQtConsole.exe
aeiou ßÚݾ·
aeiou ßÚݾ·

C:\Users\maiko.costa\testeQtConsole\debug>

我也试过了,但是之前的输出是一样的:

#include <QCoreApplication>
#include <QDebug>
#include <QTextCodec>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QTextCodec *codec = QTextCodec::codecForName("CP1252");
QTextCodec::setCodecForCStrings(codec);

qDebug() << "aeiou áéíóú";
std::cout << "aeiou áéíóú" << endl;

return 0;
}

Windows 7 的系统编码是否正确?

我错过了什么?

最佳答案

我对 QT 不是很熟悉,但我认为这对您也有帮助。 Windows 控制台使用 OEM 字符集。因此,为了在 std::cout 上正确打印字符,需要使用 OEM 对其进行编码。这可以使用 Windows API CharToOem 来完成。

小例子,让你明白(这里输入假设是UTF16):

void oemPrint(const wchar_t* str) {
char* chars = (char*)alloca(strlen(str)+1);
CharToOemW(str, chars);
fputs(chars, stdout);
}

// Usage:
oemPrint(L"aeiou áéíóú");

编辑:QT 解决方案可能是使用 QTextCodec::codecForName("IBM 850") - 这是 OEM 编解码器。

关于c++ - 如何使用 Qt 打印 unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com