2012-01-25 3 views
4

Кто-нибудь знает сценарий, способный преобразовать строку в ArrayBuffer с использованием кодировки Unicode?Javascript - Преобразование между строкой Unicode и ArrayBuffer

Я создаю эквивалент буфера на стороне браузера node.js. Единственное, что осталось, это unicode. Все остальные сделаны.

Благодарим за помощь!

+0

который Юникода кодировки: UTF-8, UTF-16LE, UTF-16BE, UTF-32le, UTF-32be? их немало. –

+0

node.js docs говорят, что это кодировка Unicode BMP (Basic Multilingual Plane). –

+0

Базовая многоязычная плоскость - это абстракция, связанная с unicode, но не кодировка и связанная со всеми кодировками, перечисленными выше. 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 (этот [i ++] * 256 + this [ i ++]); 'будет медленным для длинных строк. Соберите charcodes в массиве 'arr' и выполните' String.fromCharCode.apply (arr) '. – kirilloid

+0

@kirilloid: thx! –

+3

Ой, извините. 'String.fromCharCode.apply (* null *, arr)' – kirilloid

Смежные вопросы