2014-11-06 9 views
0

Node.JS를 사용하는 프로젝트가 있습니다. Latin1의 터미널 (UART COM 포트)에 문자열을 보내야합니다. 방금 String 개체를 1 바이트 인코딩 (예 : Latin-1)으로 만들 수 없음을 깨달았습니다.JavaScript의 문자열에 UTF-16 대신 Latin-1 인코딩을 사용하려면 어떻게해야합니까?

바이트 배열에서 문자열을 만들어야합니다. 128보다 작은 바이트는 ASCII 바이트이고이 바이트를 가진 문자열은 항상 좋아 보인다. 그러나 127보다 큰 바이트를 전달하면 항상 2 바이트 (UTF-16)의 문자열을 검색합니다.

정말 모든 바이트의 1 바이트 표현 만 원합니다. 어떻게하면 될까요?

+0

가능한 복제 ([인코딩 문제 Node.js를의 콘솔에 쓰기] http://stackoverflow.com/questions/13735228/encoding-problems-console-in-node-js 일 때) – nwellnhof

+0

@nwellnhof, 그것은 같은 문제가 아닙니다. 언급 한 질문에서 문제는 출력의 출현에 관한 것입니다. 하지만 내 질문에 1 바이트 인코딩 문자열 개체를 가져올 필요가. –

+0

JavaScript 문자열의 인코딩을 변경할 수 없습니다. 바이트 배열을 허용하는 API가 필요합니다. – nwellnhof

답변

0

IconV 아마도 같은

뭔가 일할 수 (테스트되지 않은 코드를!) :

var Buffer = require('buffer').Buffer; 
    var Iconv = require('iconv').Iconv; 

    var iconv = new Iconv('UTF-16','latin1'); 

    bytes.forEach(function(byte){ 
     var bufferbyte = iconv.convert(byte); 
    }); 
+0

iconv를 사용하려고했지만 문제가 있습니다. 필요한 인코딩에서 문자열을 반환하지 않는 메서드가 있습니다. 바이트 표현 만. latin1의 터미널에 문자열을 보내야합니다. 이 라이브러리는 여기서 도움이되지 않습니다. –