Что вы сплотиться хотите сделать либо создать документ в кодировке 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;
В любом случае вы должны сохранить исходные файлы в кодировке UTF-8, пока вы работаете с Qt.
В обоих случаях вы можете использовать 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;
'äöü' выглядит как UTF-8 кодирование 'äöü', неверно истолкованное как латинское-1. Ваш код работает как ожидалось. –
Почему вы используете макрос u8 здесь? QString не кодируется UTF-8, поэтому это не имеет большого смысла. – MrEricSir
Спасибо, напомню, что в будущем – NaCl