Hallo zusammen!
Ich schreibe gerade unter Debian eine Qt-Anwendung und habe Probleme mit dem Zeichensatz:
Es soll eine Datei, die auf einem Windows-PC erstellt wurde eingelesen und dargestellt werden. In der Datei befinden sich Sonderzeichen wie z.B. ° ä ü ...
Sobald ich die Datei unter Linux öffne oder gar bearbeite werden alle Sonderzeichen falsch dargestellt... beim Einlesen selber entsprechend auch.
Wie kann ich Debian so einstellen, dass "normale" Windows-Dateien ohne Fehler angezeigt werden?
Außderdem: Wenn ich z.B. unter Qt Sonderzeichen ausgebe, werden diese auch als Datenmüll dargestellt... Nach einer Konvertierung QString->String->c_char ->utf8 klappt das....allerdings is das ziemlich umständlich....
Könnt ihr mir Sagen, was ich bei den Zeichensätzen unter Debian beachten muss? Danke!
Zeichensatz? Programmierung unter Qt?
Re: Zeichensatz? Programmierung unter Qt?
es gibt keine "normalen" Dateien, selbst eine "westeuropäiche" Windowsinstallation, verwendet gleichzeitig 3 verschiedene Zeichensätze: den westeuropäischen Zeichensatz Windows-1252 ( wahrscheinlich meinst du den), Unicode und einen OEM Zeichensatz, z.B OEM-850, die je nachdem mit welchem Programm diese Dateien verwurschtelt werden, Verwendung finden.
Das entsprechende Encoding kannst du unter Qt z.B über QTextStream::setCodec("ISO 8859-1"), oder QTextStream::setCodec("ISO-8859-15") einstellen
Gruß
gms
edit: und zeig uns bitte einmal deine Locale Einstellungen, z.B
Das entsprechende Encoding kannst du unter Qt z.B über QTextStream::setCodec("ISO 8859-1"), oder QTextStream::setCodec("ISO-8859-15") einstellen
kannst du bitte dazu einen Beispielcode posteneierfeile hat geschrieben: Außderdem: Wenn ich z.B. unter Qt Sonderzeichen ausgebe, werden diese auch als Datenmüll dargestellt... Nach einer Konvertierung QString->String->c_char ->utf8 klappt das....allerdings is das ziemlich umständlich....
Gruß
gms
edit: und zeig uns bitte einmal deine Locale Einstellungen, z.B
Code: Alles auswählen
gms1 ~ # locale
LANG=de_AT.UTF-8
...
LC_ALL=de_AT.UTF-8
Re: Zeichensatz? Programmierung unter Qt?
Danke für die Schnelle Antwort!
Also...ich hab das Problem behoben...glaub ich:
Unter "dpkg-reconfigure locales" war nur der de_DE.UTF-8 Zeichensatz geladen. Jetzt hab ich mal einfach den de_DE ISO8859-1 geladen geladen.
Ist das eine gute Wahl? Oder sollt ich das de_DE@euro ISO8859-15 laden? Was ist der Unterschied?
Das Euro-Zeichen selber ist vorhanden...zumindest in den Standard-Programmen!
Aber mal wieder Qt: Wenn ich da ein Zeichen ausgeben will....ein kleines Kästchen...
Das Beispiel unter Qt ist jetzt nicht mehr vorhanden....es hat ja funktioniert...aber es war so ungefähr:(string is ein QString)...
Also...ich hab das Problem behoben...glaub ich:
Unter "dpkg-reconfigure locales" war nur der de_DE.UTF-8 Zeichensatz geladen. Jetzt hab ich mal einfach den de_DE ISO8859-1 geladen geladen.
Ist das eine gute Wahl? Oder sollt ich das de_DE@euro ISO8859-15 laden? Was ist der Unterschied?
Das Euro-Zeichen selber ist vorhanden...zumindest in den Standard-Programmen!
Aber mal wieder Qt: Wenn ich da ein Zeichen ausgeben will....ein kleines Kästchen...
Das Beispiel unter Qt ist jetzt nicht mehr vorhanden....es hat ja funktioniert...aber es war so ungefähr:
Code: Alles auswählen
Text->append(QString::fromUtf8(string.toStdString.c_str));