2013-04-26 4 views
6

Buffer의 'binary'는 더 이상 사용되지 않지만 사용해야합니다. 웹 응용 프로그램 노드 js + express를 작성합니다. 사용자가 파일을 다운로드 할 수 있고, (중국 문자입니다) 값을보고노드 js의 Buffer.toString ('binary')

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

를 사용하지 않을 경우 파일 이름이 왜곡되거나됩니다

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

출력 : 버퍼, e7,89,9b

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

출력 : 버퍼, C3, A7, c2,89, c2,9b

이 알고리즘의 의미와 바이너리 toString을 사용하는 이유는 무엇입니까?

답변

3

실제로 new Buffer('牛')new Buffer('牛', 'utf-8')의 바로 가기입니다.
따라서 다시 문자열로 변환하려면 toString('utf-8')을 사용해야합니다.

예 :

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> 

추가 읽기 :

+1

내가 의미하는 것은 : var에 buf0 = 새로운 버퍼 ('牛'); Res.download (allpath, buf0.toString ('utf-8'))가 정상적이지 않습니다 (브라우저에서 깨졌습니다.) Var buf0 = new Buffer ('牛'); res.download (allpath, buf0.toString ('binary))는 정상입니다. 그러나 왜? utf-8을 바이너리로 변경하는 이유는 무엇입니까? – user1625647

+0

의미있는 오류가있는 많은 코드를 제공해 주시겠습니까? 나는 당신의 진짜 문제를 이해했는지 모르겠습니다. – fsenart