gpt4 book ai didi

c++ - QString 的 toHtmlEscaped 不起作用

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

我正在将带有一些非 ascii 字符的 QString 写入 html 文件,如下所示:

QString string = "äöü";
std::ofstream f("myfile.html");
f << "<h1>" << qPrintable(string.toHtmlEscaped()) << "</h1>\n";

所以我调用了 toHtmlEscaped(),但是我还是得到了 äöü。更奇怪的是,使用这种特定方式将字符串写入文件并将该 HTML 文件打印为 PDF 会导致正确的编码。

我可能踩到的任何陷阱?

最佳答案

你想做的是创建一个像这样的 UTF-8 文档:

QString string = "äöü";
std::ofstream f("myfile.html");
f << "<head><meta charset=\"utf-8\"/></head>" << std::endl;
f << "<h1>" << string.toStdString() << "</h1>" << std::endl;

或者像这样创建一个 Latin-1 文档

QString string = "äöü";
std::ofstream f("myfile.html");
f << "<h1>" << string.toLatin1().data() << "</h1>" << std::endl;

在任何情况下,只要您使用 Qt,就必须保存 UTF-8 编码的源文件。


在这两种情况下,您都可以使用 toHtmlEscaped 来转义 < , > , &" :

QString string = "äöü<no-tag>";
std::ofstream f("myfile.html");
f << "<head><meta charset=\"utf-8\"/></head>" << std::endl;
f << "<h1>" << string.toHtmlEscaped().toStdString() << "</h1>" << std::endl;

QString string = "äöü<no-tag>";
std::ofstream f("myfile.html");
f << "<h1>" << string.toHtmlEscaped().toLatin1().data() << "</h1>" << std::endl;

关于c++ - QString 的 toHtmlEscaped 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629737/

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