540 Stimmen

Warum gibt fs.readFile() von Node.js einen Puffer statt eines Strings zurück?

Ich versuche, den Inhalt von test.txt (das sich im selben Ordner wie der Javascript-Quellcode befindet) und zeigen Sie es mit diesem Code an:

var fs = require("fs");

fs.readFile("test.txt", function (err, data) {
    if (err) throw err;
    console.log(data);
});

Der Inhalt der test.txt wurde erstellt am nano :

Node.js readFile() testen

Und ich bekomme das hier:

Nathan-Camposs-MacBook-Pro:node_test Nathan$ node main.js
<Buffer 54 65 73 74 69 6e 67 20 4e 6f 64 65 2e 6a 73 20 72 65 61 64 46 69 6c 65 28 29>
Nathan-Camposs-MacBook-Pro:node_test Nathan$

22voto

ayusha Punkte 444

Le site data Variable enthält eine Buffer Objekt. Konvertieren Sie es in ASCII-Kodierung unter Verwendung der folgenden Syntax:

data = data.toString('ascii', 0, data.length)

Oder an UTF-8 Kodierung:

data = data.toString('utf8', 0, data.length)

Asynchron:

fs.readFile('test.txt', 'utf8', function (error, data) {
    if (error) throw error;
    console.log(data.toString());
});

1voto

Shoaib Khalil Punkte 843

Sie vermissen das Kodierungsschema beim zweiten Parameter, das normalerweise be "utf-8" . Wenn kein Kodierungsschema angegeben ist, wird ein einfacher Puffer zurückgegeben.

-1voto

Wenn es sich nicht um eine Mediendatei handelt, können Sie die Methode .toString() verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X