ฉันมีสคริปต์ Perl ที่สร้างผลลัพธ์ utf8 ฉันลองใช้ Set-Content เพื่อเขียนไฟล์ utf8 ตามที่Powershell เขียนทับ Perl binmode แนะนำหรือไม่ .
perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding Byte
สร้างข้อผิดพลาด
"Set-Content: ไม่สามารถดำเนินการเข้ารหัสไบต์ได้เมื่อใช้การเข้ารหัสไบต์เนื้อหาจะต้องเป็นประเภทไบต์"
perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding UTF8
ไม่สร้างข้อความแสดงข้อผิดพลาด แต่ไม่ได้เขียนไฟล์ utf8 ที่ถูกต้องเช่นกัน
ผลลัพธ์ของสคริปต์ perl จะแสดงอย่างถูกต้องในหน้าต่าง Powershell วิธีที่ถูกต้องในการเขียนเอาต์พุตนั้นไปยังไฟล์ที่เข้ารหัส utf8 คืออะไร?
ขอบคุณ
ปรับปรุง: ฉันได้เห็นการตอบสนองหลาย ๆ นี้และปัญหาที่คล้ายกันที่นี่ที่ลิงค์อ้างถึงข้างต้นและที่https://stackoverflow.com/questions/40098771/changing-powershells-default-output-encoding-to-utf-8 ไม่มีใครทำงานได้เลยทำให้ฉันเชื่อว่าไม่มีใครผ่านการทดสอบ ทดสอบวิธีการเปลี่ยนเส้นทางออกข้อความ UTF8 จากโปรแกรม CLI ไปยังแฟ้มที่เป็นที่ต้องการ ขอบคุณ
นี่คือสคริปต์ทดสอบ perl:
use strict;
use warnings;
use utf8;
binmode(STDOUT, ":utf8");
print("The Crüxshadows");
$utf8 = New-Object System.Text.utf8encoding
แล้วใช้มันเป็นการเข้ารหัสของคุณ:perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding $utf8