在Python 3中,我可以这样做:
>>> "€13,56".encode('utf-16')
b'\xff\xfe\xac 1\x003\x00,\x005\x006\x00'
输入是(unicode)字符串,而输出是以utf-16编码的字符串的原始字节序列。
如何在JavaScript中执行相同的操作 - 从(unicode)字符串转到以utf-16编码的字符串的原始字节序列(可能是Uint8Array
?)?
答案 0 :(得分:4)
你想要这个吗?
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');
答案 1 :(得分:1)
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)
答案 2 :(得分:0)
要获取Uint8Array
,请使用此代码
将
return bufView
更改为return 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');
答案 3 :(得分:0)
我需要将utf8编码的字符串转换为十六进制utf-16字符串:
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();
}