Tech Blog

อุบัติเหตุ 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

ส่งข้อความได้ตามสบาย

กรุณาส่งข้อความ หากมีคำปรึกษาด้านเทคนิค ความคิดเห็น หรือคำถาม