[JavaScript] UTF-8 코드값으로부터 String 구성하기

UTF-8은 ASCII 코드값은 1바이트로, 유럽권 문자는 2바이트로, 아시아권 문자는 3바이트로 구성함으로써 전세계 모든 언어를 처리할 수 있는 유니코드 중 하나입니다. 저는 기존에 편의상 EUC-KR을 사용했으나 이제부터는 UTF-8을 먼저 고려하고 사용해야한다고 생각하게 되었습니다.

아래의 코드는 DataView 객체에 저장된 UTF-8 코드값으로부터 String으로 구성하는 코드입니다. 변환 속도를 위해 다소 코드가 난해 합니다. 제가 개발한 서버에서 문자열 데이터를 UTF8로 인코딩된 바이너리 데이터로 웹브러우저로 보내게 되는데 이때 사용한 코드입니다.

function getStringUTF8(dataview, offset, length) {
    var s = '';

    for (var i = 0, c; i < length;) {
        c = dataview.getUint8(offset + i++);
        s += String.fromCharCode(
            c > 0xdf && c < 0xf0 && i < length - 1
            ? (c & 0xf) << 12 | (dataview.getUint8(offset + i++) & 0x3f) << 6 
            | dataview.getUint8(offset + i++) & 0x3f
            : c > 0x7f && i < length
            ? (c & 0x1f) << 6 | dataview.getUint8(offset + i++) & 0x3f
            : c
        );
    }
    
    return s;
}

짧은 코드이지만 몇일 동안 고민하고 고민하던 차에 만난... 저에게는 매우 의미있고 값진 코드입니다. ^^;

“[JavaScript] UTF-8 코드값으로부터 String 구성하기”에 대한 2개의 댓글

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다