每当我不得不在多语种网站上工作时,我就一直在努力 (特别是日语和中文),用户可以用区域语言输入字符。
答案 0 :(得分:0)
字符可以是单字节,双字节,三字节等。单字节跟在特定范围内。其他角色也是如此。基于此,我创建了以下函数,这些函数将根据内存计算字符串的大小
function getByteLength(normal_val) {
// Force string type
normal_val = String(normal_val);
var byteLen = 0;
for (var i = 0; i < normal_val.length; i++) {
var c = normal_val.charCodeAt(i);
byteLen += c < (1 << 7) ? 1 :
c < (1 << 11) ? 2 :
c < (1 << 16) ? 3 :
c < (1 << 21) ? 4 :
c < (1 << 26) ? 5 :
c < (1 << 31) ? 6 : Number.NaN;
}
return byteLen;
}
因此可以修改上面的函数以找出函数是单字节还是多字节。
以下js小提琴根据记忆确定输入文本的大小。
http://jsfiddle.net/paraselixir/d83oaa3v/5/
所以如果string有x个字符且内存大小是y 所以如果x === y则所有字符都是单字节 如果2 * x === y那么所有字符都是双字节 否则string是单字节和双字节/多字节的组合。