Probleme mit Encoding (ANSI Zeichen)

  • VB.NET
  • .NET 5–6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Eierlein.

    Probleme mit Encoding (ANSI Zeichen)

    Hallo,

    ich versuche in NET 6 ein ß in eine Textdatei auszugeben als ß (223 als Byte) und nicht als ß (195,159 als Byte)
    es müsste das UTF7Encoding sein. Der Editor einer Datei mit dem Byte 223 sagt ANSI.
    Wenn ich mit UTF7 ein ß einlese kommt auch ß an, mit UTF8 zum Beispiel nicht.

    Aber mit UTF7 schreiben ergibt (+AN8-), mit UTF8 schreiben wird im normalen Editor zwar als ß dargestellt ist in Bytes aber ß
    Hat das mal einer von euch gehabt?

    Auf der Suche nach einer Machbarkeit, bin ich auf diesen Code gekommen. (Ohne RegisterProvider hat er auch gemeckert, desegen dachte ich womöglich hilft das auch mit dem UTF7 Encoding, das ist jedoch weiterhin nicht hinzukriegen.)

    VB.NET-Quellcode

    1. System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance)
    2. IO.File.WriteAllBytes(path, "ß".Select(Function(c) CByte(Asc(c))).ToArray)

    Hat von euch wer eine Idee, ob man die WriteAllLines und WriteAllText dazu befähigen kann?
    (Das beschränkt sich natürlich nicht auf ß und vermutlich auch nicht auf NET 6)

    Viele Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Ich glaub ich versteh das Problem nicht.
    Hab ne .NET 7 App und folgenden Code, der UTF8 nutzt.

    VB.NET-Quellcode

    1. IO.File.WriteAllText("output.txt", "ß", System.Text.Encoding.UTF8)
    2. Dim input = IO.File.ReadAllText("output.txt", System.Text.Encoding.UTF8)

    Ergebnis im Anhang.
    Die Datei enthält ein ß
    Bilder
    • inputoutput.png

      8,91 kB, 596×101, 14 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hast du die Bytes geprüft?

    VB.NET-Quellcode

    1. IO.File.WriteAllText("output.txt", "ß", System.Text.Encoding.UTF8)
    2. Dim input = IO.File.ReadAllBytes("output.txt")
    Erstmal kommt bei dir UTF8 mit BOM (die ersten drei Bytes) rum und dann 195,159

    Dass man da ß lesen kann, stimmt. Im Editor, im Studio...
    Aber das Ausgabefile muss ein ganz bestimmtes Format erfüllen und da dürfen ß ä,ö,ü nicht zwei Zeichen lang sein. Bzw. wäre es ein größerer Aufwand auf diese Zeichen zu prüfen und die Zeichenanzahl nachträglich zu regulieren.

    Anbei ein "korrektes" Esszett, der Editor wird dir bei diesem File auch ANSI anzeigen. Oder aber mein Code erzeugt auch so ein File.
    Dateien
    • EssZett.txt

      (1 Byte, 96 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()