none
StreamWriter mit individuellen Encoding nutzen

    Frage

  • Hallo Community,

    ich erstelle gerade ein Script, das Änderungen in deiner Text-Date dokumentieren soll. Aus Performancegründen habe ich mich hier für den Streamwriter entschieden. Das das verarbeitende System TXT-Datei mit der Codepage 1252 benötigt, möchte ich dem Konstruktor des Streamwriter das entsprechende Encoding als Parameter mitgeben. Nur leider akzeptiert er es nicht. Es gibt auch keine Fehlermeldung.

    Hiermal ein Script, das das Problem verdeutlicht.

    $SW = $null
    $SWARGS = @("C:\MH_Test\Test.txt" , [system.text.encoding]::getencoding(1252) )
    $SWARGS[1]
    $SW = New-Object -TypeName System.io.Streamwriter -ArgumentList $SWARGS
    $SW.Encoding
    $SW.WriteLine("Zeile schreiben " + (Get-Date).ToLongTimeString())
    $SW.WriteLine("Äpfel, Überhang, Straße ÄäÜüÖö ß")
    $SW.Flush()
    $SW.Close()

    $SWARGS[1] zeigt folgendes an.

    IsSingleByte      : True
    BodyName          : iso-8859-1
    EncodingName      : Westeuropäisch (Windows)
    HeaderName        : Windows-1252
    WebName           : Windows-1252
    WindowsCodePage   : 1252
    IsBrowserDisplay  : True
    IsBrowserSave     : True
    IsMailNewsDisplay : True
    IsMailNewsSave    : True
    EncoderFallback   : System.Text.InternalEncoderBestFitFallback
    DecoderFallback   : System.Text.InternalDecoderBestFitFallback
    IsReadOnly        : True
    CodePage          : 1252

    $SW.Encoding sagt aber 

    BodyName          : utf-8
    EncodingName      : Unicode (UTF-8)
    HeaderName        : utf-8
    WebName           : utf-8
    WindowsCodePage   : 1200
    IsBrowserDisplay  : True
    IsBrowserSave     : True
    IsMailNewsDisplay : True
    IsMailNewsSave    : True
    IsSingleByte      : False
    EncoderFallback   : System.Text.EncoderExceptionFallback
    DecoderFallback   : System.Text.DecoderExceptionFallback
    IsReadOnly        : True
    CodePage          : 65001

    Wenn ich die Datei mit notepad++ öffne wird auch UTF-8 bestätigt.

    Wo liegt mein Fehler??

    Gruß

    Michael

    Samstag, 10. März 2018 13:12

Antworten

Alle Antworten