티스토리 뷰

node에서 어쩌다 보니.. euc-kr을 인코딩 디코딩 할 일이 생겨서 해 보고 고생한 김에.. 메모를 남긴다.

우선 iconv-lite 패키지를 설치해야 한다.

$ npm install iconv-lite

아래는 euc-kr인 문서를 읽어서 utf-8로 바꾸고 euc-kr로 바꾸는 예제이다.

let iconv = require('iconv-lite');
let fs = require('fs');

// 처음 로딩시 enc-kr 파일
let content = fs.readFileSync('content-kr.txt');
console.log(content.toString());

let utf8Str = iconv.decode(content, 'euc-kr');
console.log(utf8Str);
// utf-8 text로 저장
fs.writeFileSync('content-utf-8.txt', utf8Str, { encoding: 'utf8' });

let euckrStr = iconv.encode(utf8Str, 'euc-kr');
console.log(euckrStr.toString());
// euc-kr text로 저장
fs.writeFileSync('content-euc-kr.txt', content, {encoding: 'binary'});

iconv-lite는 utf-8기준으로 인코딩/디코딩을 하는 라이브러리다.
그래서 euc-kr문서를 utf-8로 바꿀려고 하면..

decode => euc-kr

utf-8을 euc-kr로 바꿀려고 하면,

encode => euc-kr

-_-;; 모두 euc-kr을 써서 혼동 스러웠는데… utf-8을 기준으로 동작하는 거니..
어떻게 생각하면 편한거 같기도 하고..

그럼 끝…

댓글
  • 프로필사진 비밀댓글입니다 2019.05.13 01:55
  • 프로필사진 lisyoen 예제코드가 잘못된 것 같은데요.
    kr 변수가 euc-kr 을 말하는거라면 iconv.encode 를 사용해야 하는거죠?
    그런데 writeFileSync 에서는 encoding: 'utf8' 로 기록하고 있네요.
    전반적으로 뭔가 뒤섞인 예제 같습니다.
    아래 설명과 달라서 한참 테스트 해봤네요.
    2019.06.06 16:57
  • 프로필사진 신규하 예제코드를 다시 확인 해 봤는데..
    별 이상은 없었습니다.
    제가 처음에 읽은 파일이 euc-kr로 인코딩 된 텍스트 인데 그걸 설명을 안 해서 이해가 잘 안 되는게 아닌가 싶네요..
    저두 처음에 이게 뭔가 싶을 정도로 혼란 스러워서 정리한 내용 입니다.
    이해가 좀 쉽도록 코드에 주석을 추가 해 뒀습니다.
    2019.06.12 02:06 신고
댓글쓰기 폼