Unicode von Datei laden und abspeichern
Verfasst: 16. Dezember 2009 21:17
Hallo,
mein Texteditor nimmt langsam gestalt an und konnte bisher auch alle gängigen Dateien öffnen. Ich benutze eine Ableitung von QPlainTextEdit als centralWidget.
Doch wenn ich versuche, eine UTF-8-Datei darin zu öffnen, erscheint ein "" am Anfang der Datei (BOM vermute ich?) und alle Zeichen, die nicht über die ersten 128 ASCII-Einträge hinausgehen, werden ebenfalls richtig angezeigt. Aber Sonderzeichen (» usw.) werden eben als Fragezeichen oder als ganz komische Buchstaben-Kobination dargestellt.
Verstanden habe ich, dass man die ersten Bytes auf EF BB BF prüfen muss, um eventuell eine UTF-8 Datei zu erkennen.
Aber bei der Umsetzung im Editor hört es auf. Der Editor soll ja nicht nur UTF-8, sondern auch den normalen ISO-Zeichensatz darstellen können. Und was vor allem wichtig ist: Wie man eine Datei öffnet, soll sie auch - wenn man nichts verändert - wieder abgespeichert werden.
Wie kann ich in Qt eine Datei, die beliebig kodiert ist (wichtig wären ASCII, UTF-8 ) in einen QString einlesen, wieder in eine Datei abspeichern und richtig in einem Q(Plain)TextEdit darstellen?
QTextStream::setCodec() ist mir schon aufgefallen, die Zeichen werden aber trotzdem, nach langem rumprobieren, nicht richtig angezeigt.
Ich hoffe, man versteht mich.
Vielen Dank im Voraus,
Amgon
mein Texteditor nimmt langsam gestalt an und konnte bisher auch alle gängigen Dateien öffnen. Ich benutze eine Ableitung von QPlainTextEdit als centralWidget.
Doch wenn ich versuche, eine UTF-8-Datei darin zu öffnen, erscheint ein "" am Anfang der Datei (BOM vermute ich?) und alle Zeichen, die nicht über die ersten 128 ASCII-Einträge hinausgehen, werden ebenfalls richtig angezeigt. Aber Sonderzeichen (» usw.) werden eben als Fragezeichen oder als ganz komische Buchstaben-Kobination dargestellt.
Verstanden habe ich, dass man die ersten Bytes auf EF BB BF prüfen muss, um eventuell eine UTF-8 Datei zu erkennen.
Aber bei der Umsetzung im Editor hört es auf. Der Editor soll ja nicht nur UTF-8, sondern auch den normalen ISO-Zeichensatz darstellen können. Und was vor allem wichtig ist: Wie man eine Datei öffnet, soll sie auch - wenn man nichts verändert - wieder abgespeichert werden.
Wie kann ich in Qt eine Datei, die beliebig kodiert ist (wichtig wären ASCII, UTF-8 ) in einen QString einlesen, wieder in eine Datei abspeichern und richtig in einem Q(Plain)TextEdit darstellen?
QTextStream::setCodec() ist mir schon aufgefallen, die Zeichen werden aber trotzdem, nach langem rumprobieren, nicht richtig angezeigt.
Ich hoffe, man versteht mich.
Vielen Dank im Voraus,
Amgon