单字节,双字节,三字节字符如何查找用户输入的字符

时间:2017-03-10 05:09:56

标签: javascript jquery multibyte chinese-locale double-byte

每当我不得不在多语种网站上工作时,我就一直在努力 (特别是日语和中文),用户可以用区域语言输入字符。

1 个答案:

答案 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是单字节和双字节/多字节的组合。