iconv사용하기

web페이지를 만들다 보면 한글 깨짐 문제가 있습니다.

인코딩을 하나로 통일 하면 별 문제 없습니다.

우리의 소원은 통일이지만......통일 그렇게 쉬운 일은 아니죠!!!


node.js에도 예외없이 다른 인터페이스와 연동시 

한글 깨짐 문제가 발생 할 수 있습니다.


하지만, node.js에서는 iconv라는 모듈로 UTF8 -> EUC-KR, EUC-KR -> UTF8로 변환이 가능합니다.

오늘은 그 예제 입니다.


설치 방법은...

$ npm install iconv


샘플 소스

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

var euckr2utf8 = new Iconv('EUC-KR', 'UTF-8');
var utf82euckr = new Iconv('UTF-8', 'EUC-KR');

// utf8 안녕하세요
var buff_utf8 = new Buffer(15); 
buff_utf8[0] = 0xec;
buff_utf8[1] = 0x95;
buff_utf8[2] = 0x88;
buff_utf8[3] = 0xeb;
buff_utf8[4] = 0x85;
buff_utf8[5] = 0x95;
buff_utf8[6] = 0xed;
buff_utf8[7] = 0x95;
buff_utf8[8] = 0x98;
buff_utf8[9] = 0xec;
buff_utf8[10] = 0x84;
buff_utf8[11] = 0xb8;
buff_utf8[12] = 0xec;
buff_utf8[13] = 0x9a;
buff_utf8[14] = 0x94;

// euc-kr 안녕하세요
var buff_euckr = new Buffer(10);
buff_euckr[0] = 0xbe;
buff_euckr[1] = 0xc8;
buff_euckr[2] = 0xb3;
buff_euckr[3] = 0xe7;
buff_euckr[4] = 0xc7;
buff_euckr[5] = 0xcf;
buff_euckr[6] = 0xbc;
buff_euckr[7] = 0xbc;
buff_euckr[8] = 0xbf;
buff_euckr[9] = 0xe4;

console.log("---------------------------------------");
console.log("euckr : "+buff_euckr.toString());
console.log("euckr2uf8 : "+euckr2utf8.convert(buff_euckr));

console.log("\n---------------------------------------");
console.log("utf8 : "+buff_utf8.toString());
console.log("utf82euckr : "+utf82euckr.convert(buff_utf8));


실행 결과

node_iconv.PNG


위 예제 파일의 인코딩은 UTF8입니다.

실행 결과를 보시면 알겠지만.... UTF8환경에서 EUC-KR을 찍으면 한글이 깨짐니다.

iconv를 사용해 EUC-KR -> UTF8로 변환 하니 한글이 깨지지않고 출력 됩니다.

UTF8의 경우는 변환 하지 않아도 잘 출력되고, UTF8 -> EUC-KR로 변환하니 한글이 깨집니다.

당연한 거겠죠....^^;


node.js에서는 한글 깨지는 문제를 위와 같은 방법으로 해결 할 수 있을것 같습니다. ^^;


감사합니다.


[참고 사이트]:https://github.com/bnoordhuis/node-iconv