Ini muncul tinggi di Google, jadi saya ingin menambahkan beberapa informasi kontekstual tentang pertanyaan asli (penekanan saya):
Mengapa Node.js 'fs.readFile () mengembalikan buffer alih-alih string?
Karena file tidak selalu berupa teks
Bahkan jika Anda sebagai programmer tahu: Node tidak tahu apa yang ada dalam file yang ingin Anda baca. Ini bisa berupa file teks, tetapi bisa juga berupa arsip ZIP atau gambar JPG - Node tidak tahu.
Karena membaca file teks itu rumit
Bahkan jika Node tahu itu untuk membaca file teks, masih tidak akan tahu pengkodean karakter mana yang digunakan (yaitu bagaimana byte dalam file memetakan ke karakter yang dapat dibaca manusia), karena pengkodean karakter itu sendiri tidak disimpan dalam file tersebut .
Ada beberapa cara untuk menebak pengkodean karakter file teks dengan lebih atau kurang percaya diri (itulah yang dilakukan editor teks saat membuka file), tetapi Anda biasanya tidak ingin kode Anda mengandalkan tebakan tanpa instruksi eksplisit Anda.
Buffer untuk menyelamatkan!
Jadi, karena tidak dan tidak bisa mengetahui semua detail ini, Node hanya membaca file byte untuk byte, tanpa mengasumsikan apa pun tentang isinya.
Dan itulah buffer yang dikembalikan: wadah yang tidak terbuka untuk konten biner mentah. Bagaimana konten ini harus ditafsirkan terserah Anda sebagai pengembang.