Benutzer mit den meisten Antworten
UTF 8 in einem String erkennen

Frage
-
Hallo allerseits!Ich muß in meinem Programm Textdateien verarbeiten. Die Spezifikation für diese Dateien sagtunter anderem aus, dass die einzelnen Zeilen der Datei 128 Zeichen lang sein müssen und zukurze Zeilen mit Leerzeichen aufgefüllt werden. Über die zu verwendende Zeichncodierung trifftdie Spezifikation keine Aussage. Diese Dateien werden nun von verschiedensten Fremdprogrammenerzeugt, die sich leider nicht immer an die Spezifikation halten - manchmal steht alles in einerZeile, manchmal sind zu kurze Zeilen nicht mit Leerzeichen aufgefüllt.Um auch solche Dateien verarbeiten zu können, füllt mein Programm beim Lesen zu kurze Zeilenselbst mit Leerzeichen auf und teilt zu lange Zeilen auf. Das hat bisher auch gut funktioniert.Seit kurzem erhalte ich jedoch auch Dateien, die nicht als ANSI sondern als UTF 8 codiert sind.Bei diesen werden nun die Zeilen, die UTF 8 codierte Zeichen enthalten, fälschlich geteilt, dasie ja mehr als 128 Byte haben.Meine Frage daher: kann ich bei einer gelesenen Zeile irgendwie erkennen, ob die Daten ANSIoder UTF 8 sind? Eine BOM enthalten die Dateien leider nicht.TIAGrüßeThomas
Antworten
-
Hallo Thomas,
es gibt unter [1] ein Tool, mit dem man überprüfen kann, ob ein String mit UTF8 kodiert ist. Hilft dir das schon weiter? Etwas umfangreicher wird das ganze unter [2] behandelt.
[1] http://utf8checker.codeplex.com/
[2] http://www.codeproject.com/Articles/17201/Detect-Encoding-for-In-and-Outgoing-Text
Viele Grüße,
Thomas Fröhle
App-Entwickler-Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die App-Entwickler-Hotline: http://www.msdn-online.de/Hotline
Es gelten für die App-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu MarkenzeichenInformationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die App-Entwickler-Hotline.
- Bearbeitet Thomas Fröhle Mittwoch, 22. Januar 2014 14:44
- Als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Nicht als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Als Antwort markiert Thomas Schremser Donnerstag, 23. Januar 2014 08:47
Alle Antworten
-
Hallo Thomas,
es gibt unter [1] ein Tool, mit dem man überprüfen kann, ob ein String mit UTF8 kodiert ist. Hilft dir das schon weiter? Etwas umfangreicher wird das ganze unter [2] behandelt.
[1] http://utf8checker.codeplex.com/
[2] http://www.codeproject.com/Articles/17201/Detect-Encoding-for-In-and-Outgoing-Text
Viele Grüße,
Thomas Fröhle
App-Entwickler-Hotline für MSDN Online Deutschland
Disclaimer:
Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die App-Entwickler-Hotline: http://www.msdn-online.de/Hotline
Es gelten für die App-Entwickler-Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu MarkenzeichenInformationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die App-Entwickler-Hotline.
- Bearbeitet Thomas Fröhle Mittwoch, 22. Januar 2014 14:44
- Als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Nicht als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Als Antwort vorgeschlagen Michael Weinreuter Mittwoch, 22. Januar 2014 14:46
- Als Antwort markiert Thomas Schremser Donnerstag, 23. Januar 2014 08:47
-
Bist Du Dir sicher dass die Zeilen 128 Zeichen "lang" sein müssen? Oder sollten diese 128 Zeichen enthalten? Oder sollte eine Zeile 128 Bytes groß sein?
Wenn Du eine utf-8 codierte Datei bekommst die lauter Zeichen mit hohen Codepoints hat, dann kann es passieren dass Du viele 2- 3- oder auch 4-byte Sequenzen hast wobei immer nur jeweils ein Zeichen codiert ist.
Wichtig ist zu wissen dass es keine 1:1 Beziehung mehr zwischen Zeichen und Byte gibt beim utf-8 Encoding.
Und da Du ANSI und auch utf-8 codierte Files verarbeiten musst, ist es eigentlich obligatorisch dass die utf-8 files auch eine utf-8 BOM haben, sonst kannst du ja nicht wissen mit was du es zu tun hast.
Peter
- Bearbeitet Peter Brightman Donnerstag, 21. Juli 2016 11:05 spelling