นอกเหนือจากคำตอบของ @ jrb ใน Vim การตรวจพบการเข้ารหัสอักขระของไฟล์จะขึ้นอยู่กับตัวเลือก fileencodings (บันทึก 's' ไว้ท้ายไฟล์)
เช่นบน Windows ค่าเริ่มต้นสำหรับfileencodings
ตัวเลือกคือucs-bom
ซึ่งหมายความว่า:
ตรวจสอบว่ามี BOM อยู่ที่จุดเริ่มต้นของไฟล์หรือไม่
หากมี BOM อยู่ให้ 'อ่านการเข้ารหัสอักขระของไฟล์จาก BOM'
หาก BOM ไม่มีอยู่ (และในกรณีนี้ก็หมายความว่าการเข้ารหัสอักขระทั้งหมดที่ระบุในfileencodings
ตัวเลือกไม่สามารถจับคู่ได้) ให้อ่านไฟล์ที่มีการเข้ารหัสอักขระที่ระบุในencoding
ตัวเลือก การเข้ารหัสตัวอักษรเริ่มต้นสำหรับตัวเลือก:encoding
latin1
ตอนนี้เนื่องจากlatin1
เป็นการเข้ารหัสอักขระความยาวหนึ่งไบต์ไบต์ทั้งหมดในไฟล์เป็นlatin1
อักขระที่ถูกต้อง(แม้แต่Nul
ตัวอักษร^@
ที่คุณเห็น *)
* - จริง ๆ แล้ว^@
คืออักขระขึ้นบรรทัดใหม่ในข้อความบัฟเฟอร์ของ Vim ไม่ใช่อักขระ Nul
วิธีที่เหมาะสมในการอ่านไฟล์คือการระบุการเข้ารหัสอักขระด้วยตนเองเป็น UTF-16 (เพราะดูเหมือนว่า UTF-16 เป็นการเข้ารหัสอักขระที่เหมาะสมในกรณีนี้)