Daylogs/Javascript

node.js: euc-kr 을 utf8 로 변경하기

ohgyun 2016. 6. 6. 15:51
발생일: 2014.07.10

키워드: node, 노드, 문자열 인코딩, 디코딩, euc-kr, utf-8

문제:
노드에서 euc-kr 문서를 읽어 utf-8 로 변경해 처리하려고 한다.


해결책:
노드의 네이티브 인코딩에는 euc-kr 이 포함되어 있지 않다.
대안으로 iconv 라이브러리를 이용해 처리할 수 있다.

1. euc-kr 로 인코딩된 문서는 바이너리로 읽어온다.

2. 새 버퍼에 대상 문자열을 할당한 후, iconv 로 변경한다.

function eucKrToUtf8(str) {
    var iconv = new Iconv('euc-kr', 'utf-8');
    var buf = new Buffer(str, 'binary');
    return iconv.convert(buf).toString();
}


논의:
난 jsdom 으로 euc-kr 로 인코딩된 문서를 읽어올 목적이었다.
같은 목적이라면, jsdom 에서 문서를 읽어올 때 아래처럼 binary 옵션을 주면 된다.

    jsdom.env({
        url: ...
        src: ...,
        encoding: 'binary',
        ...
    });


참고:

반응형