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");
la source
$utf8 = New-Object System.Text.utf8encoding
puis utilisez-le comme votre encodage:perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding $utf8