นอกเหนือจากคำตอบของ @ 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 เป็นการเข้ารหัสอักขระที่เหมาะสมในกรณีนี้)