[erledigt] ANSI Textdatei auslesen und in UTF-8 umwandeln...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

[erledigt] ANSI Textdatei auslesen und in UTF-8 umwandeln...

Beitrag von GeoW » 25.02.2012 23:28:26

Hallo,
ich habe eine Textdatei, die im ANSI Zeichensatz gespeichert ist. Das Auslesen an sich ist erstmal nicht das Problem, es erfolgt mit Gio::DataInputStream. Da std::string und Glib::ustring mit UTF-8 arbeiten, werden zum Beispiel die deutschen Umlaute bei Ausgaben falsch dargestellt. Gibt es eine Funktion zum Umwandeln von einen string mit ANSI Zeichen in einen string mit UTF-8? Oder kann man das beim auslesen der Datei irgendwie gleich einstellen oder umwandeln?
Zuletzt geändert von GeoW am 27.02.2012 20:52:14, insgesamt 1-mal geändert.

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von detix » 26.02.2012 08:33:30

Der ANSI Zeichensatz ist doch iso-8859-1?
Probiers mal so

Code: Alles auswählen

iconv -f ISO_8859-1 -t UTF-8 "deineDatei" -o "deineDatei_UTF8"
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von GeoW » 26.02.2012 09:18:28

Eigentlich wollte ich die Datei nicht umwandeln, sondern auslesen, und hatte gehofft, dann den string mit ANSI nach einen string mit UTF-8 umzuwandeln. Also dachte da gibt es irgendeine Funktion oder so in Gtkmm/Glib/Gio oder C++. Aber die Idee mit der Dateiumwandlung ist eigentlich auch nicht so schlecht. Ich könnte sie ja einfach in eine temporäre Datei umwandeln, auslesen und wieder löschen.

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von detix » 26.02.2012 09:58:07

Du musst das auch nicht speichern, ohne "-o ..." erfolgt die Ausgabe direkt auf der Konsole,
du kannst den Stream dann direkt weiterverarbeiten oder auch als Variable nutzen, zB

Code: Alles auswählen

Ausgabe=$(iconv -f ISO_8859-1 -t UTF-8 "deineDatei")
echo $Ausgabe
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von GeoW » 26.02.2012 10:24:19

Aus C++ heraus müßte ich das ja mit system("iconv ...") aufrufen. Da bekomme ich ja so wie ich das sehe eine int-Wert zurück oder kann ich mir da auch irgendwie den stream bekommen?

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von detix » 26.02.2012 10:36:02

...und schon bin ich wieder draußen, da keine Ahnung von C++
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

GeoW
Beiträge: 49
Registriert: 23.03.2007 16:10:10

Re: ANSI Textdatei auslesen und in UTF-8 umwandeln (Gtkmm/Gi

Beitrag von GeoW » 27.02.2012 20:51:10

Ich habe es wie oben beschrieben gemacht. Da es ja leider keine Funktion für std::string oder Gilb::ustring zugeben scheint, finde ich diese Lösung sehr einfach.
Danke für die Hinweise.

Antworten