วิธีใช้ PowerShell Set-Content


0

ฉันมีสคริปต์ 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");

ให้เอาต์พุตสคริปต์ perl ไปยังไฟล์ข้อความจากนั้นเรียกใช้ Set-Content ซึ่งในขณะที่คล้ายกับสิ่งที่คุณทำไม่เหมือนกัน
Ramhound

perl -S testbinmode.pl> binmode.txt ... ชุดเนื้อหา "binmode.txt" -Encoding UTF8 ... สร้าง cmdlet ตั้งค่าเนื้อหาที่ตำแหน่งคำสั่งไพพ์ไลน์ 1 จัดหาค่าพารามิเตอร์ต่อไปนี้: ค่า [0]: .. ฉันจะดำเนินการอย่างไร ... ทำไมกล่องนี้ปิดและโพสต์เมื่อฉันพยายามที่จะแยกการตอบสนองของฉันเป็นหลายบรรทัด?
Freon Sandoz

อัปเดตคำถามของคุณความคิดเห็นที่ไม่ได้ฟอร์แมตไม่สามารถอ่านได้ ฉันไม่ตอบคำถามที่ถามในความคิดเห็นหรือพิจารณาข้อมูลใด ๆ ที่มีอยู่ในความคิดเห็นเมื่อส่งคำตอบ
Ramhound

ลองสิ่งนี้: $utf8 = New-Object System.Text.utf8encodingแล้วใช้มันเป็นการเข้ารหัสของคุณ:perl -S testbinmode.pl | Set-Content "binmode.txt" -Encoding $utf8
SimonS

ยัง: ผมคิดว่าเกิดข้อผิดพลาดบอกว่ามีเนื้อหาที่จะไม่ได้เขียนหรือไม่ทราบว่าจะเขียนไป
Simons
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.