อุบัติเหตุ Encoding ที่เกิดขึ้นระหว่างการแก้ไขข้อความเป็นชุด และการกู้คืนด้วยการสร้างใหม่ทั้งหมด
PowerShell Encoding Operations
บทนำ
เมื่อแก้ไขไฟล์ Markdown บทความบล็อกใน Astro เป็นชุดด้วย PowerShell การกำหนดค่า encoding ที่ผิดพลาดทำให้ตัวอักษรภาษาญี่ปุ่นทั้งหมดเสียหาย
นี่คือหน้าจอที่เรากำลังทำงานอยู่

สิ่งที่เกิดขึ้น
Set-Contentของ PowerShell เขียนไฟล์เป็น UTF-16 LE โดยค่าเริ่มต้น- Content Collections ของ Astro คาดหวัง UTF-8
- เป็นผลให้ตัวอักษรภาษาญี่ปุ่นทั้งหมดเสียหาย
วิธีการกู้คืน
ไฟล์ทั้งหมดได้รับการกู้คืนจาก Git commit ก่อนหน้าผ่าน checkout จากนั้นใช้ [System.IO.File]::WriteAllText ใหม่พร้อมกำหนด encoding UTF-8 อย่างชัดเจน
เราเปิดแต่ละหน้า — รายการ แนะนำ อันดับ และละเอียด — ตามลำดับ และตรวจสอบด้วยสายตาว่าข้อความภาษาญี่ปุ่นแสดงผลถูกต้อง

# วิธีที่ถูกต้อง
[System.IO.File]::WriteAllText($path, $content, [System.Text.Encoding]::UTF8)
สิ่งที่เรียนรู้
ควรระบุ encoding อย่างชัดเจนเสมอเมื่อเขียนไฟล์ใน PowerShell
ใช้ Set-Content -Encoding UTF8 หรือ [System.IO.File]::WriteAllText พร้อม UTF8