【问题标题】:Single byte, Double byte, triple byte characters how to find which one is entered by user单字节、双字节、三字节字符如何查找用户输入的字符
【发布时间】:2017-03-10 05:09:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    字符可以是单字节、双字节、三字节等。单个字节在特定范围内。其他角色也是如此。基于此,我创建了以下函数,这些函数将根据内存计算字符串的大小

    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 那么所有字符都是双字节 否则字符串是单字节和双字节/多字节的组合。

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      相关资源
      最近更新 更多