สิ่งนี้เกิดขึ้นบน Google ดังนั้นฉันต้องการเพิ่มข้อมูลเชิงบริบทเกี่ยวกับคำถามเดิม (เน้นที่เหมือง):
ทำไม Node.js 'fs.readFile () ส่งคืนบัฟเฟอร์แทนสตริง
เพราะไฟล์ไม่ได้เป็นข้อความเสมอ
แม้ว่าคุณในฐานะโปรแกรมเมอร์รู้ว่า: โหนดไม่มีความคิดว่ามีอะไรในไฟล์ที่คุณพยายามอ่าน อาจเป็นไฟล์ข้อความ แต่ก็อาจเป็นไฟล์ ZIP หรือภาพ JPG ได้ - โหนดไม่รู้
เพราะการอ่านไฟล์ข้อความเป็นเรื่องยุ่งยาก
แม้ว่าโหนดจะรู้ว่าต้องอ่านไฟล์ข้อความ แต่ก็ยังไม่มีความคิดว่าจะใช้การเข้ารหัสอักขระใด (เช่นวิธีการที่ไบต์ในการแมปไฟล์ไปยังอักขระที่มนุษย์อ่านได้) เนื่องจากการเข้ารหัสอักขระนั้นไม่ได้เก็บไว้ในไฟล์ .
มีวิธีที่จะเดาการเข้ารหัสอักขระของไฟล์ข้อความด้วยความมั่นใจมากขึ้นหรือน้อยลง (นั่นคือสิ่งที่ผู้แก้ไขข้อความทำเมื่อเปิดไฟล์) แต่โดยปกติคุณไม่ต้องการให้โค้ดของคุณพึ่งพาการเดาโดยไม่ต้องมีคำสั่งอย่างชัดเจน
บัฟเฟอร์เพื่อช่วยเหลือ!
ดังนั้นเนื่องจากมันไม่สามารถและไม่สามารถทราบรายละเอียดทั้งหมดเหล่านี้โหนดเพียงอ่านไฟล์ไบต์สำหรับไบต์โดยไม่ต้องสมมติอะไรเกี่ยวกับเนื้อหา
และนั่นคือสิ่งที่บัฟเฟอร์ที่ส่งคืนคือ: คอนเทนเนอร์ที่ไม่มีการแบ่งแยกสำหรับเนื้อหาไบนารีแบบดิบ เนื้อหานี้ควรตีความอย่างไรนั้นขึ้นอยู่กับคุณในฐานะนักพัฒนา