none
UTF 8 in einem String erkennen RRS feed

  • Frage

  • Hallo allerseits!
     
    Ich muß in meinem Programm Textdateien verarbeiten. Die Spezifikation für diese Dateien sagt
    unter anderem aus, dass die einzelnen Zeilen der Datei 128 Zeichen lang sein müssen und zu
    kurze Zeilen mit Leerzeichen aufgefüllt werden. Über die zu verwendende Zeichncodierung trifft
    die Spezifikation keine Aussage. Diese Dateien werden nun von verschiedensten Fremdprogrammen
    erzeugt, die sich leider nicht immer an die Spezifikation halten - manchmal steht alles in einer
    Zeile, 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 Zeilen
    selbst 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, da
    sie ja mehr als 128 Byte haben.
     
    Meine Frage daher: kann ich bei einer gelesenen Zeile irgendwie erkennen, ob die Daten ANSI
    oder UTF 8 sind? Eine BOM enthalten die Dateien leider nicht.
     
    TIA
     
    Grüße
    Thomas
     
    Mittwoch, 22. Januar 2014 14:33

Antworten

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
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    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.



    Mittwoch, 22. Januar 2014 14:42
  • 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?
     
    Ja, das hilft. Vielen Dank!
     
    Grüße
    Thomas
     
    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


    Donnerstag, 21. Juli 2016 11:04