Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  QT- Utf-8 codierte Textdatei schreiben     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
shisha
Unregistrierter




Beitrag shisha Unregistrierter 00:20:34 09.03.2010   Titel:   QT- Utf-8 codierte Textdatei schreiben            Zitieren

Hallo ich möchte eigentlich nur eine Datei anlegen und dort Utf-8 codiert Hällo reinschreiben,
folgnder Code liefert nicht das erwünschte Ergebnis:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <QtCore/QCoreApplication>
#include
<QDir>


int main()
{
    QFile x("/home/kleopatra/test.txt");
    x.open( QIODevice::ReadWrite);

    QString s("Hällo");
    x.write(s.toUtf8());
    return 0;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <QtCore/QCoreApplication>
#include
<QDir>


int main()
{
QFile x("/home/kleopatra/test.txt");
x.open( QIODevice::ReadWrite);

QString s("Hällo");
x.write(s.toUtf8());
return 0;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <QtCore/QCoreApplication>
#include
<QDir>


int main()
{
    QFile x("/home/kleopatra/test.txt");
    x.open( QIODevice::ReadWrite);

    QString s("Hällo");
    x.write(s.toUtf8());
    return 0;
}


wo liegt denn mein Fehler?
MasterK
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.05.2005
Beiträge: 59
Beitrag MasterK Mitglied 00:33:36 09.03.2010   Titel:              Zitieren

C/C++ Code:
QTextStream out(&x);
out.setCodec("UTF-8");
out << s;
C/C++ Code:
QTextStream out(&x);
out.setCodec("UTF-8");
out << s;
C/C++ Code:
QTextStream out(&x);
out.setCodec("UTF-8");
out << s;
shisha
Unregistrierter




Beitrag shisha Unregistrierter 10:03:57 09.03.2010   Titel:              Zitieren

Kanst du das etwas ausführlicher erklären?

1. warum läuft meins nicht
2. was machst du genau
3. gibt es alternativen?
shisha
Unregistrierter




Beitrag shisha Unregistrierter 10:21:22 09.03.2010   Titel:              Zitieren

Autsch, das funktioniert auch nicht so, ich erhalt stets:

Code:
Hällo
Code:
Hällo
Code:
Hällo


als Ausgabe statt Hällo
zwutz
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.11.2007
Beiträge: 3411
Beitrag zwutz Mitglied 10:29:45 09.03.2010   Titel:              Zitieren

mit welcher Kodierung ist die Quelltextdatei abgespeichert?

Versuch probehalber mal das:
C/C++ Code:
QTextStream out(&x);
out.setCodec(QTextCodec::codecForLocale());
out << s;
C/C++ Code:
QTextStream out(&x);
out.setCodec(QTextCodec::codecForLocale());
out << s;
C/C++ Code:
QTextStream out(&x);
out.setCodec(QTextCodec::codecForLocale());
out << s;

_________________
Raise your glass if you are wrong


Zuletzt bearbeitet von zwutz am 10:29:59 09.03.2010, insgesamt 1-mal bearbeitet
shisha
Unregistrierter




Beitrag shisha Unregistrierter 10:47:58 09.03.2010   Titel:              Zitieren

Also die Datei existiert vorher noch nicht, soll also neu angelegt werden.

Ich arbeite unter Linux, wo UTF-8 doch eigentlich Standard sein sollte...

also hier die Ausgabe deines Vorschlags:

Code:
Hällo
Code:
Hällo
Code:
Hällo


im hex-editor:
Code:
48 C3 A4 6C 6C 6F
Code:
48 C3 A4 6C 6C 6F
Code:
48 C3 A4 6C 6C 6F


was meiner Meinung nach Utf-8 ist.

soweit recht gut, nun ein blick auf die Ausgabe von setCodec("UTF-8")

Code:
48 C3 83 C2 A4 6C 6C 6F
Code:
48 C3 83 C2 A4 6C 6C 6F
Code:
48 C3 83 C2 A4 6C 6C 6F


ich dachte ein ä wäre nur C3 A4 und nicht C3 83 C2 A4,
das ist meiner Meinung nach KEIN utf-8 obwohl es doch explizit eingestellt wird.

Und nun bin ich gespannt auf Erklärungen ^^, denn ich kann es mir nicht erklären =)
zwutz
Mitglied

Benutzerprofil
Anmeldungsdatum: 22.11.2007
Beiträge: 3411
Beitrag zwutz Mitglied 11:24:25 09.03.2010   Titel:              Zitieren

nun, du hast tatsächlich als UTF-8 abgespeichert, soweit passts.

Du speicherst die Datei und aus 'ä' wird 'C3 A4'.

Jetzt gibst du diesen UTF8-String aber dem ASCII-Konstruktor des QStrings. Mit setCodec("UTF-8") lässt du das aber wieder als UTF-8 interpretieren. Und so wird ASCII 'C3 A4' UTF-8-codiert zu 'C3 83 C2 A4'

_________________
Raise your glass if you are wrong
shisha
Unregistrierter




Beitrag shisha Unregistrierter 12:47:56 09.03.2010   Titel:              Zitieren

Ausweg?

irgendwie mit fromUtf8() ?
MasterK
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.05.2005
Beiträge: 59
Beitrag MasterK Mitglied 20:03:20 09.03.2010   Titel:              Zitieren

fromLatin1() sollte gehen.
C/C++ Forum :: Andere GUIs - Qt, GTK+, wxWidgets ::  QT- Utf-8 codierte Textdatei schreiben   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.