Reputation: 229301
In Python 3, I can do this:
>>> "€13,56".encode('utf-16')
b'\xff\xfe\xac 1\x003\x00,\x005\x006\x00'
The input is a (unicode) string, while the output is a sequence of raw bytes of that string encoded in utf-16.
How can I do the same in JavaScript - go from a (unicode) string, to a sequence of raw bytes (perhaps as a Uint8Array
?) of that string encoded in utf-16?
Upvotes: 9
Views: 31329
Reputation: 19237
I needed to convert a utf8 encoded string to a hexadecimal utf-16 string:
function dec2hex(dec, padding){
return parseInt(dec, 10).toString(16).padStart(padding, '0');
}
function utf8StringToUtf16String(str) {
var utf16 = [];
for (var i=0, strLen=str.length; i < strLen; i++) {
utf16.push(dec2hex(str.charCodeAt(i), 4));
}
return utf16.join();
}
Upvotes: 2
Reputation: 547
To get Uint8Array
, use this code
inspired by shilch's Answer
change
return bufView
toreturn new Uint8Array(buf)
function strEncodeUTF16(str) {
var buf = new ArrayBuffer(str.length * 2);
var bufView = new Uint16Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return new Uint8Array(buf);
}
var arr = strEncodeUTF16('€13,56');
Upvotes: 0
Reputation: 1605
function strEncodeUTF16(str) {
var arr = []
for (var i = 0; i < str.length; i++) {
arr[i] = str.charCodeAt(i)
}
return arr
}
var arr = strEncodeUTF16('€13,56');
console.log(arr)
Upvotes: 2
Reputation: 1935
Do you want this?
function strEncodeUTF16(str) {
var buf = new ArrayBuffer(str.length*2);
var bufView = new Uint16Array(buf);
for (var i=0, strLen=str.length; i < strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return bufView;
}
var arr = strEncodeUTF16('€13,56');
Taken from Google Developers
Upvotes: 14