Zeichensatz? Programmierung unter Qt?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
eierfeile
Beiträge: 114
Registriert: 01.02.2004 16:16:22

Zeichensatz? Programmierung unter Qt?

Beitrag von eierfeile » 19.05.2009 12:50:46

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!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Zeichensatz? Programmierung unter Qt?

Beitrag von gms » 19.05.2009 19:31:45

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
eierfeile 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....
kannst du bitte dazu einen Beispielcode posten

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

Benutzeravatar
eierfeile
Beiträge: 114
Registriert: 01.02.2004 16:16:22

Re: Zeichensatz? Programmierung unter Qt?

Beitrag von eierfeile » 20.05.2009 12:14:30

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:

Code: Alles auswählen

Text->append(QString::fromUtf8(string.toStdString.c_str));
(string is ein QString)...

Antworten