2012-08-29 4 views
0

NodeJS "파쇄"를 사용하여 POST 요청에서 UTF8로 인코딩 된 텍스트 파일을 제출하는 데 문제가 있습니다.내 NodeJS POST 요청의 마지막 2 글자가 제거 된 이유는 무엇입니까?

게시하려고하는 텍스트 내용이 클라이언트 측에서 잘 보이는 것처럼 보입니다. client.post를 호출하기 직전 화면은 서버가 얻는 텍스트 파일의 내용이지만 마지막 2 문자는 항상 누락/잘린다. ANSI 텍스트 파일에는 문제가 없습니다. textfile을 UTF8에서 ANSI로 변환하면 서버에 도달 할 때 텍스트 파일이 완료됩니다. (readTextFile.php에 의해) 서버에 받았다 무엇

var Shred = require('shred'); 
var client = new Shred(); 
var textToPost = fs.readFileSync("myfile.txt", 'utf8'); 
console.log (textToPost); 
client.post({ 
    url: "http://www.example.com/readTextFile.php", 
    headers: { 'Content-Type': 'application/x-subrip'}, 
content: textToPost, 
on: { 
    200: function (response) { 
    console.log("posted ok"); 
console.log(response.content.body); 
    }, 
    500: function (response) { 
    asyncCb(new Error('bad response\n' + response.content.body)); 
    } 
} 

밖으로 제거 마지막 두 문자와 MYFILE.TXT의 내용입니다. 이유를 이해할 수 없습니다. 이것은 다운 스트림에 큰 영향을 미치므로 어떤 누덕 누덕 해결책이 도움이되지 않습니다.

textToPost의 내용이 콘솔에 기록 될 때 "?" 내용 앞에. 파일이 ANSI로 인코딩 된 파일 인 경우에는 나타나지 않습니다.

.. 감사합니다 도와주세요

+0

첫 번째 문자로''? ''를 갖는 textToPost의 내용은 나쁜 기호이며, 아마도 파쇄에는 아무런 문제가 없다는 것을 의미 할 것입니다. – rdrey

+0

UTF8에서 크기가 엉망인 바이트 순서 표시가있는 것처럼 보입니다. http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom – JohnnyHK

+0

이러한 의견을 주셔서 감사합니다. 이것은 하나의 입력이 아닌 많은 수의 UTF8 텍스트 파일에서 발생하며 예,이 파일들은 모두 EF BB BF (즉, UTF8)로 이진 편집기에서 열 때 볼 수있는 BOM을 가지고 있습니다. 게시 할 때 이것이 어떻게 문제가되는지 확신하지 못함 – Tommy

답변

0

좋아, 위의 의견 (감사 rdrey 및 JohnnyHK가), I 파일 (들)에서 BOM을 제거하기로 결정 후. 그래서 16 진수 편집기를 사용하여 EF BB BF 문자를 삭제하고 저장했습니다. 이번에는 파일이 서버에 완전히 도착하여 마지막에 누락 된 문자가 없습니다. 이제 nodeJS를 수정하여 문자를 제거합니다. 이것은 내 질문에 완전히 대답하지 않습니다 (BOM에 문제가있는 이유는 무엇입니까?). 아마도 파쇄는 BOM이있는 텍스트 파일을 게시하는 데 문제가 있습니다. 어쩌면 잘못 읽은 다음 파일이 실제 크기보다 작다는 결론을 내릴 수 있습니다. 결과적으로 끝이 잘립니다. 나는 잘 모르겠다.