링커벨 카테고리 분류가 잘 안되는 문제가 발생했다. 분명 문제 없이 잘 됐었는데 갑자기 왜 안되는지 모르겠다.
이유를 알아보기 위해 postman에서 같은 조건으로 테스트를 진행해봤다.
에러를 보고 iconv-lite
를 잘못 설정했다고 생각했다.
위 사진 첫줄에 나온 레퍼런스)와 스택오버플로우에 관련 내용, 다양한 블로그의 글을 찾아보며 iconv-lite
설정에 잘못된 점이 없는지 찾아봤다.
그 결과 다음과 같은 정보를 얻었다.
이중 디코딩을 했을 가능성이 있다.
다음과 같이 작성했다고 하자
var http = require('http'),
iconv = require('iconv-lite');
http.get("http://website.com/", function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
var decodedBody = iconv.decode(body, 'win1252');
console.log(decodedBody);
});
});
위 코드에서 body += chunk
는 실제로 다음과 같은 일이 발생한다.
res.on('data',function(chunkBuffer){
body += chunkBuffer.toString('utf8');
});
이는 백그라운드에서 res.setEncoding('utf8');
이 진행된다.
이중 인코딩은 utf8
변환이 손실되고 잘못된 결과를 가져올 수 있다. 또한 원래의 바이트도 복원할 수 없어 iconv.decode(new Buffer(body, 'utf8'), win1252')
도 도움이 되지 않는다.
이 부분을 조금 더 확인해봐야겠다.
Photo by Daniel Lincoln on Unsplash