Это должно решить вашу проблему
Как использовать строки с типизированными массивами JavaScript
Строки JS хранятся в кодировке UTF-16, где каждый символ занимает 2 байта. String.charCodeAt возвращает эти 2-байтовые Unicodes. Вот как читать строки в кодировке UTF-16 из DataView:
DataView.prototype.getUTF16String = function(offset, length) {
var utf16 = new ArrayBuffer(length * 2);
var utf16View = new Uint16Array(utf16);
for (var i = 0; i < length; ++i) {
utf16View[i] = this.getUint8(offset + i);
}
return String.fromCharCode.apply(null, utf16View);
};
и эти функции для преобразования строки в массив буферов и из него
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
function str2ab(str) {
var buf = new ArrayBuffer(str.length*2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}