2013-04-26 8 views
6

obwohl Buffers' binary 'veraltet ist, muss ich es verwenden: Ich schreibe eine Web-App verwenden Knoten js + express. Benutzer können Datei herunterladen, und der Dateiname wird verstümmelt, wenn nichtnode js 's Buffer.toString (' binary ')

res.download(allpath,buf0.toString('binary')); 

verwenden beobachten Sie den Wert (ein chinesisches Zeichen):

console.log(new Buffer('牛')); 

Ausgang: Puffer, e7,89,9b

und

var buf0=new Buffer('牛'); 
console.log(new Buffer(buf0.toString('binary'))); 

Ausgang: Puffer, c3, a7, c2,89, c2,9b

Was bedeutet dieser Algorithmus, und warum Binary ToString verwenden ist Arbeit?

Antwort

3

Eigentlich ist new Buffer('牛') eine Abkürzung für new Buffer('牛', 'utf-8').
Also, wenn Sie es zurück in eine Zeichenfolge konvertieren möchten, müssen Sie toString('utf-8') verwenden.

Beispiel:

console.log(new Buffer('牛')); 
// Output: <Buffer e7 89 9b> 

var buf0=new Buffer('牛'); 
console.log(new Buffer(buf0.toString('utf-8'))); 
// Output: <Buffer e7 89 9b> 

Weiterführende Literatur:

+1

Was ich meine ist: var buf0 = new Buffer ('牛'); Res.Download (allpath, buf0.toString ('utf-8')) ist nicht normal (im Browser, verstümmelt.) Und Var buf0 = neuer Puffer ('牛'); res.download (allpath, buf0.toString ('binary)) ist normal.aber warum? Was utf-8 zu binär ändern? – user1625647

+0

Können Sie bitte eine Menge Code mit sinnvollen Fehlern angeben? Ich bin mir nicht sicher, ob ich dein wirkliches Problem verstanden habe. – fsenart