2013-04-26 16 views
6

sebbene il' binario 'di Buffer sia deprecato, devo usarlo: Scrivo un'app Web usa il nodo js + express. utente può scaricare il file, e il nome sarà incomprensibile se non utilizzarenodo js 'Buffer.toString (' binario ')

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

guardare il valore (è un carattere cinese):

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

uscita: Buffer, e7,89,9b

e

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

uscita: tampone, c3, a7, c2,89, c2,9b

che significato ha questo algoritmo, e perché usare binary toString è funzionante?

risposta

3

In realtà, new Buffer('牛') è una scelta rapida per new Buffer('牛', 'utf-8').
Quindi, se si desidera riconvertirlo in una stringa, è necessario utilizzare toString('utf-8').

Esempio:

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> 

Ulteriori approfondimenti:

+1

Quello che voglio dire è: var = new buf0 Buffer ('牛'); Res.download (allpath, buf0.toString ('utf-8')) non è normale (nel browser, confuso.) E Var buf0 = new Buffer ('牛'); res.download (allpath, buf0.toString ('binary)) è normale.ma perché? Cosa cambia utf-8 in binario? – user1625647

+0

Puoi fornire un sacco di codice con errori significativi per favore? Non sono sicuro di aver capito il tuo vero problema. – fsenart