-1

每当我不得不在多语言网站(尤其是日语和中文)上工作时,我都在为此苦苦挣扎,并且允许用户输入地区语言的字符。

4

1 回答 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 回答