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?
asked Jun 2, 2016 at 15:57
Claudiu
231k174 gold badges507 silver badges702 bronze badges
-
1Possible duplicate of How to convert a String to Bytearrayphuzi– phuzi2016年06月02日 16:00:46 +00:00Commented Jun 2, 2016 at 16:00
4 Answers 4
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
answered Jun 2, 2016 at 16:09
shilch
2,0851 gold badge13 silver badges20 bronze badges
Sign up to request clarification or add additional context in comments.
1 Comment
Clifford Fajardo
I used this to convert a utf8 string (nodejs's default encoding in most cases), into utf16 string (which is the type of default encoding for javascript strings).
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)
answered Mar 23, 2017 at 19:56
alsotang
1,6071 gold badge15 silver badges15 bronze badges
Comments
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();
}
answered Dec 23, 2018 at 8:24
Gavriel
19.3k13 gold badges73 silver badges116 bronze badges
Comments
To get Uint8Array, use this code
inspired by shilch's Answer
change
return bufViewtoreturn 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ドル');
Comments
lang-js