Ich verwende eine Bibliothek, die beim Aufruf einer Funktion den toString eines Puffers zurückgibt.
Der genaue Code ist
return Buffer.concat(stdOut).toString('utf-8');
Aber ich möchte keine String-Version davon.
Ich will nur den Puffer
So konvertieren Sie einen String zurück in einen Puffer.
So etwas wie wenn
var bufStr = Buffer.concat(stdOut).toString('utf-8');
//convert bufStr back to only Buffer.concat(stdOut).
Wie macht man das?
Ich habe es versucht
var buf = Buffer.from(bufStr, 'utf-8');
Aber es wirft utf-8 ist keine Funktion. Wenn ich es tue
var buf = Buffer.from(bufStr);
Es wird TypeError ausgelöst: Dies ist kein typisiertes Array.
Vielen Dank
Buffer.from(bufStr, 'utf-8');
aber es heißt, utf-8 ist keine Funktion. Wenn ich das zweite Argument utf-8 weglasse, wird TypeError ausgelöst: Dies ist kein typisiertes Array.Buffer(bufStr)
stattdessen, bis Sie ein Upgrade durchführen.iconv-lite
ist besser, weil es Standard-Zeichensatznamen aus der Welt der Client-js (wieutf-8
) verwendet, die NodeJS-Neudefinitionen (wieutf8
) installieren .Buffer.from(str)
ist genug, da 'utf8' Standard ist. nodejs.org/api/…Hinweis: Nur den Kommentar von John Zwinck als Antwort erneut veröffentlichen.
Ein Problem könnte sein, dass Sie eine ältere Version von Node verwenden (im Moment kann ich kein Upgrade durchführen, Codebasis ist betroffen
v4.3.1
). Eine einfache Lösung ist hier die Verwendung der veralteten Methode:new Buffer(bufferStr)
quelle
Sie können
Buffer.from()
eine Zeichenfolge in einen Puffer konvertieren. Weitere Informationen hierzu finden Sie hiervar buf = Buffer.from('some string', 'encoding');
zum Beispiel
var buf = Buffer.from(bStr, 'utf-8');
quelle
Das funktioniert bei mir, Sie könnten Ihren Code so ändern
var responseData=x.toString();
zu
var responseData=x.toString("binary");
und schlussendlich
response.write(new Buffer(toTransmit, "binary"));
quelle