每当我不得不在多语言网站(尤其是日语和中文)上工作时,我都在为此苦苦挣扎,并且允许用户输入地区语言的字符。
问问题
1036 次
1 回答
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 fiddle 根据内存确定输入文本的大小。
http://jsfiddle.net/paraselixir/d83oaa3v/5/
所以如果字符串有 x 个字符并且内存大小是 y 所以如果 x === y 那么所有字符都是单字节 如果 2*x === y 那么所有字符都是双字节否则字符串是单字节和双字节/多字节的组合。
于 2017-03-10T05:09:55.733 回答