我正在将带有一些非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/