2012-01-25 3 views
4

유니 코드 인코딩을 사용하여 문자열을 ArrayBuffer로 변환 할 수있는 스크립트를 아는 사람이 있습니까?자바 스크립트 - 유니 코드 문자열과 ArrayBuffer 사이의 변환

저는 브라우저 사이드의 node.js "버퍼"를 만듭니다. 남은 유일한 인코딩은 유니 코드입니다. 다른 모든 작업은 완료됩니다.

도움 주셔서 감사합니다.

+0

하는 유니 인코딩 : UTF-8, UTF-16LE, UTF-16BE UTF-32le UTF-32BE? 꽤 많이 있습니다. –

+0

node.js docs가 유니 코드 BMP (Basic Multilingual Plane) 인코딩이라고 말합니다. –

+0

Basic Multilingual Plane은 유니 코드와 관련된 추상화이지만 인코딩은 아니며 위에 나열된 모든 인코딩과 관련이 있습니다. UTF-16LE은 Javascript 브라우저 엔진에서 사용되며 사용자의 대답에 따라 사용됩니다. – kirilloid

답변

7

나는 그것을 스스로 발견했다.

디코딩 :

var b = new Uint8Array(str.length*2); 
for(var i = 0; i < b.length; i+=2){ 
    var x = str.charCodeAt(i/2); 
    var a = x%256; 
    x -= a; 
    x /= 256; 
    b[i] = x; 
    b[i+1] = a; 
} 

인코딩

var s = ""; 
for(var i = 0; i < this.length;){ 
    s += String.fromCharCode(this[i++]*256+this[i++]); 
} 
+4

's + = String.fromCharCode (this [i ++] * 256 + this [ i ++]);'긴 문자열에서는 느려집니다. charcode를'arr' 배열로 모으고'String.fromCharCode.apply (arr)'을 실행하십시오. – kirilloid

+0

@kirilloid : thx! –

+3

죄송합니다. 'String.fromCharCode.apply (* null *, arr)' – kirilloid