Benutzer mit den meisten Antworten
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 : 65001Wenn ich die Datei mit notepad++ öffne wird auch UTF-8 bestätigt.
Wo liegt mein Fehler??
Gruß
Michael
Antworten
-
Mit dem Dateinamen brauchst Du ein zweites boolesches Argument (überschreiben, falls vorhanden). Encoding kommt als drittes.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert Michael 1971 Sonntag, 11. März 2018 12:26
Alle Antworten
-
Mit dem Dateinamen brauchst Du ein zweites boolesches Argument (überschreiben, falls vorhanden). Encoding kommt als drittes.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert Michael 1971 Sonntag, 11. März 2018 12:26
-
Hallo Evgenij,
vielen Dank für die schnelle Antowort.
Ich habe mir die Beschreibung für die Kontruktoren der Klasse bestimmt 3 mal angeschaut. Irgenwie habe ich aber immer übersehen, dass bei den Variante mit den 2 Parametern "Stream" und nicht "String" stand. *smile*
Gruß
Michael