So verwenden Sie PowerShell Set-Content

566
Freon Sandoz

Ich habe ein Perl-Skript, das eine utf8-Ausgabe erzeugt. Ich habe versucht, mit Set-Content eine utf8-Datei zu schreiben, wie von Powershell vorgeschlagen, die Perl binmode überschreibt. .

perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding Byte 

erzeugt den Fehler

"Set-Content: Die Byte-Kodierung kann nicht fortgesetzt werden. Bei der Byte-Kodierung muss der Inhalt vom Typ Byte sein."

perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding UTF8 

erzeugt keine Fehlermeldung, schreibt jedoch auch keine korrekte utf8-Datei.

Die Ausgabe des Perlskripts wird im Powershell-Fenster korrekt angezeigt. Wie schreibe ich diese Ausgabe in eine utf8-codierte Datei?

Vielen Dank.

Update: Ich habe viele Antworten auf diese und ähnliche Probleme gesehen, hier unter dem oben genannten Link und unter https://stackoverflow.com/questions/40098771/changing-powershells-default-output-encoding-to-utf-8 . Keiner von ihnen scheint zu funktionieren, weshalb ich glaube, dass keiner wirklich getestet wurde. Eine getestete Methode zum Umleiten der UTF8-Textausgabe von einem CLI-Programm in eine Datei ist erwünscht. Vielen Dank.

Hier ist das Perl-Testskript:

use strict; use warnings; use utf8; binmode(STDOUT, ":utf8"); print("The Crüxshadows"); 
0
Lassen Sie das Perl-Skript in eine Textdatei ausgeben, und führen Sie dann Set-Content aus. Was ähnlich ist, was Sie tun, ist nicht genau das Gleiche Ramhound vor 6 Jahren 0
perl -S testbinmode.pl> binmode.txt ... Set-Content "binmode.txt" -Encoding UTF8 ... erzeugt das Cmdlet Set-Content an der Position der Befehlspipeline 1 Geben Sie Werte für die folgenden Parameter an: Wert [0] :. ... wie gehe ich vor? ... Warum wird dieses Kästchen geschlossen, wenn ich versuche, meine Antwort in mehrere Zeilen aufzuteilen? Freon Sandoz vor 6 Jahren 0
Aktualisieren Sie Ihre Frage, Ihr unformatierter Kommentar kann nicht gelesen werden. Ich beantworte keine Frage in einem Kommentar oder berücksichtige keine Informationen, die in einem Kommentar enthalten sind, wenn Sie eine Antwort übermitteln Ramhound vor 6 Jahren 0
Probieren Sie Folgendes aus: `$ utf8 = New-Object System.Text.utf8encoding` und verwenden Sie es dann als Kodierung:` perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding $ utf8` SimonS vor 6 Jahren 0
Außerdem: Ich denke, die Fehlermeldung sagt, dass es keinen Inhalt gibt, der geschrieben werden kann, oder er weiß nicht, wo er geschrieben werden soll SimonS vor 6 Jahren 0
Nee. Fehlermeldung: "Set-Content: Parameter 'Encoding' kann nicht gebunden werden. Der Wert" System.Text.UTF8Encoding "des Typs" System.Text.UTF8Encoding "kann nicht in" Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding "konvertiert werden Wenn Sie eine formatierte Antwort schreiben, müssen Sie mir sagen, wie. Diese Site erlaubt mir nicht, die Eingabetaste zu verwenden, um meine Antwort in mehrere Zeilen zu unterteilen. Kann jemand eine * getestete * Methode angeben, um die UTF8-Textausgabe von einem CLI-Programm an eine andere Adresse umzuleiten eine Datei unter PowerShell? Freon Sandoz vor 6 Jahren 0

0 Antworten auf die Frage