728x90
노드로 ping이나 traceroute 요청에 대해 전달 받은 ip로 결과 값을 전달해줘야 하는 API를 만드는 게 있었다.
노드에서 제공하는 cild_process의 execSync를 사용하면 되는 거라 만드는 거 자체는 어렵지 않았는데
문제는 한글이 깨지는 현상이었다.
기본 디코딩 자체가 utf8인데 euckr은 먹히지도 않아서 찾다 보니 iconv-lite를 사용하면 된다고 해서 적용해봤다.
먼저 iconv-lite를 사용하지 않고 그냥 했을 때 한글 깨지는 것부터 보면 이렇다.
const exec = require('child_process').execSync;
const cmd = 'ping -n 4 8.8.8.8';
let rs = exec(cmd);
rs = rs.toString();
console.log(rs);
이런 식으로 한글이 깨진다.
iconv-lite 적용을 위해 우선 npm install iconv-lite로 설치를 해준 뒤 아래와 같이 작성하면 된다.
const exec = require('child_process').execSync;
const iconv = require('iconv-lite');
const cmd = 'ping -n 4 8.8.8.8';
let rs = exec(cmd);
rs = iconv.decode(rs, 'euc-kr');
console.log(rs);
반응형
'Node.js' 카테고리의 다른 글
[NodeJS] ElasticSearch bulk (0) | 2021.11.23 |
---|---|
[NodeJS] Multer를 이용해 파일 ElasticSearch에 등록하기 (1) | 2021.11.20 |
[NodeJS] crypto를 이용한 단방향 암호화(해시 함수) 만들기 (2) | 2021.04.24 |
[NodeJS] async 와 await (0) | 2021.04.03 |
[NodeJS] node 파일 모듈화와 비구조화 할당 (0) | 2021.04.03 |