Comment utiliser PowerShell Set-Content?

0

J'ai un script Perl qui produit une sortie utf8. J'ai essayé d'utiliser Set-Content pour écrire un fichier utf8 comme suggéré par Powershell annulant Perl binmode? .

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

produit l'erreur

"Définir le contenu: impossible de procéder au codage d'octet. Lorsque vous utilisez le codage d'octet, le contenu doit être de type octet."

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

ne produit pas de message d'erreur, mais n'écrit pas non plus un fichier utf8 correct.

La sortie du script Perl s’affiche correctement dans la fenêtre Powershell. Quelle est la bonne façon d'écrire cette sortie dans un fichier encodé en utf8?

Merci.

Mise à jour: j’ai vu beaucoup de réponses à cela et à des problèmes similaires, ici sur le lien référencé ci-dessus, et https://stackoverflow.com/questions/40098771/changing-powershells-default-output-encoding-to-utf-8 . Aucun d'entre eux ne semble fonctionner, ce qui me porte à croire qu'aucun d'entre eux n'a été testé. UNE testé Une méthode est recommandée pour rediriger la sortie de texte UTF8 d’un programme CLI vers un fichier. Merci.

Voici le script de test perl:

use strict;
use warnings;
use utf8;
binmode(STDOUT, ":utf8");
print("The Crüxshadows");
Freon Sandoz
la source
Demandez au script perl de générer un fichier texte, puis exécutez Set-Content sur ce fichier. Ce qui est similaire à ce que vous faites n'est pas exactement pareil
Ramhound
perl -S testbinmode.pl & gt; binmode.txt ... Set-Content "binmode.txt" -Encoding UTF8 ... produit une cmdlet Set-Content à la position 1 du pipeline de commande. Indiquez des valeurs pour les paramètres suivants: Valeur [0]: ... comment dois-je procéder? ... Pourquoi cette boîte se ferme-t-elle lorsque je tente de séparer ma réponse en plusieurs lignes?
Freon Sandoz
Mettez à jour votre question, votre commentaire non formaté ne peut pas être lu. Je ne réponds pas à la question posée dans un commentaire ni ne considère aucune information contenue dans un commentaire lors de l'envoi d'une réponse.
Ramhound
essaye ça: $utf8 = New-Object System.Text.utf8encoding puis utilisez-le comme votre encodage: perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding $utf8
SimonS
aussi: je suppose que le message d'erreur dit qu'il n'y a pas de contenu à écrire ou qu'il ne sait pas où l'écrire
SimonS