강좌 & 팁
글 수 2,412
2014.06.07 11:45:54 (*.134.169.166)
64553
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));
실행 결과
위 예제 파일의 인코딩은 UTF8입니다.
실행 결과를 보시면 알겠지만.... UTF8환경에서 EUC-KR을 찍으면 한글이 깨짐니다.
iconv를 사용해 EUC-KR -> UTF8로 변환 하니 한글이 깨지지않고 출력 됩니다.
UTF8의 경우는 변환 하지 않아도 잘 출력되고, UTF8 -> EUC-KR로 변환하니 한글이 깨집니다.
당연한 거겠죠....^^;
node.js에서는 한글 깨지는 문제를 위와 같은 방법으로 해결 할 수 있을것 같습니다. ^^;
감사합니다.