Dies kommt bei Google sehr gut an, daher möchte ich einige kontextbezogene Informationen zur ursprünglichen Frage hinzufügen (Hervorhebung von mir):
Warum gibt fs.readFile () von Node.js einen Puffer anstelle eines Strings zurück?
Weil Dateien nicht immer Text sind
Auch wenn Sie als Programmierer es wissen: Node hat keine Ahnung, was in der Datei enthalten ist, die Sie lesen möchten. Es könnte eine Textdatei sein, aber es könnte genauso gut ein ZIP-Archiv oder ein JPG-Bild sein - Node weiß es nicht.
Weil das Lesen von Textdateien schwierig ist
Selbst wenn Node wüsste, dass es eine Textdatei lesen würde, hätte er immer noch keine Ahnung, welche Zeichen codiert werden verwendet wird (dh wie die Bytes in der Datei lesbaren Zeichen zugeordnet werden), da die Zeichenkodierung selbst nicht in der Datei gespeichert ist .
Es gibt Möglichkeiten zu erraten die Zeichenkodierung von Textdateien mehr oder weniger sicher (das tun Texteditoren beim Öffnen einer Datei), aber Sie möchten normalerweise nicht, dass sich Ihr Code ohne Ihre ausdrückliche Anweisung auf Vermutungen stützt.
Puffer zur Rettung!
Da Node all diese Details nicht kennt und nicht kennen kann, liest er die Datei nur Byte für Byte, ohne etwas über ihren Inhalt anzunehmen.
Und genau das ist der zurückgegebene Puffer: ein nicht mit Leidenschaft versehener Container für binären Rohinhalt. Wie dieser Inhalt interpretiert werden soll, liegt bei Ihnen als Entwickler.