Seite 1 von 1

Problem mit Umlauten bei Umwandlung nach HTML!

Verfasst: 16. Februar 2011 15:59
von Lichter
Guten Tag,

leider hab ich ein Problem mit Umlauten bei der Umwandlung einiger Daten aus einer Tableview nach HTML.
Ich verwende folgende Schleife:

Code: Alles auswählen

if (ui.tableView) {

        

        QFile file("mytable.html");
		
	file.open();	
       
        QTextStream out(&file);
	
        const long rowCount = ui.tableView->model()->rowCount();
        const long columnCount = ui.tableView->model()->columnCount();
		
        out <<  "<html>\n"
                "<head>\n"
                "<meta Content=\"Text/html; charset=Windows-1251\">\n"
				<<  QString("<title>Buchsammlung</title>\n")
            <<  "</head>\n"
                "<body bgcolor=#ffffff link=#5000A0>\n"
                "<table border=1 cellspacing=0 cellpadding=2>\n";

        // headers
        out << "<tr bgcolor=#f0f0f0>";
        for (long column = 0; column < columnCount; column++)
            if (!ui.tableView->isColumnHidden(column))
				out << QString("<th>%1</th>").arg(ui.tableView->model()->headerData(column, Qt::Horizontal).toString()); 
        out << "</tr>\n";
        file.flush();

        // data table
        for (long row = 0; row < rowCount; row++) {
            out << "<tr>";
            for (long column = 0; column < columnCount; column++) {
                if (!ui.tableView->isColumnHidden(column)) {
					QString data = ui.tableView->model()->data(ui.tableView->model()->index(row, column)).toString();
					
					out << QString("<td bkcolor=0>%1</td>").arg((!data.isEmpty()) ? data : QString("&nbsp;")); 
                }               
            }
            out << "</tr>\n";
        }
        out <<  "</table>\n"
            "</body>\n"
            "</html>\n";

        file.close();
    }
Leider werden die Umlaute falsch angezeigt. Mir ist auch nicht klar, welche Zeichenkodierung dafür in Frage kommen würde und wie ich das umsetzen kann. Erfolglos habe ich bereits probiert "data" nach Latin1 bzw. Utf8 umzuwandeln.
Es wäre nett, wenn mir jemand einen Denkanstoß geben könnte oder eine Richtung vorweisen könnte, damit ich das umsetzen kann.
Vielen Dank!

Lichter

Verfasst: 16. Februar 2011 16:09
von upsala

Code: Alles auswählen

"<meta Content=\"Text/html; charset=Windows-1251\">\n" 
So, so, nach Latin-1 oder UTF-8 wollen wir umwandeln?

ja die Sache mit dem Codec

Verfasst: 16. Februar 2011 16:19
von softwaremaker
schau dir mal folgende Funktion an:
void QTextStream::setCodec ( QTextCodec * codec )

Verfasst: 16. Februar 2011 16:53
von Lichter
upsala hat geschrieben:

Code: Alles auswählen

"<meta Content="Text/html; charset=Windows-1251">\n" 
So, so, nach Latin-1 oder UTF-8 wollen wir umwandeln?
Hallo,
das war der Grund! Ich hab charset nach UTF-8 geändert und .toUtf8() verwendet. Nun klappts!

Vielen Dank!