2013-04-26 13 views
6

mimo że "binary" bufora jest przestarzałe, muszę go użyć: Piszę aplikację internetową wykorzystując węzeł js + express. Użytkownik może pobrać plik, a nazwa pliku będzie zniekształcone, jeśli nie używaćwęzeł js 's Buffer.toString (' binary ')

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

obserwować wartości (to chińska char):

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

wyjściowa: Bufor, e7,89,9b

i

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

wyjściowa: Bufor, c3, A7, c2,89, c2,9b

jakie znaczenie ma ten algorytm i dlaczego używa się binarnego toString?

Odpowiedz

3

W rzeczywistości new Buffer('牛') to skrót od new Buffer('牛', 'utf-8').
Tak więc, jeśli chcesz przekonwertować go z powrotem na ciąg, musisz użyć toString('utf-8').

przykład:

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> 

Dalsze informacje:

+1

Chodzi o to, var buf0 = nowy bufor ('牛'); Res.download (allpath, buf0.toString ('utf-8')) nie jest normalne (w przeglądarce zniekształcone.) I Var buf0 = new Buffer ('牛'); res.download (allpath, buf0.toString ('binary)) jest normalne. Ale dlaczego? Co zmienić utf-8 na binarny? – user1625647

+0

Czy możesz podać kilka kodu znaczącymi błędami? Nie jestem pewien, czy zrozumiałem twój prawdziwy problem. – fsenart