检测双字节字符

Detect Double byte characters

本文关键字:字符 字节 检测      更新时间:2023-09-26

我必须编写一个 JavaScript 函数来验证输入的文本是否为双字节。文本框应仅接受双字节日语字符、双字节英语字符和双字节特殊字符。我尝试使用其他博客中提供的许多解决方案,但验证针对单字节英语或单字节日语字符触发,即验证对单字节英语字符触发良好,对单字节日语失败。

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

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/

在这里,您可以使用

字符串的内存大小来确定双字节 -

因此,如果字符串有 x 个字符并且内存大小为 x,则所有字符都是单个字节如果字符串有 x 个字符,内存大小为 2x,则所有字符都是双字节。如果字符串有 x 个字符并且内存大小在 x 到 2x 之间,则所有字符都是单字节和双字节的组合。