js判断当前字符是单字节还是双字节

JavaScript014

js判断当前字符是单字节还是双字节,第1张

你把问题说得莫名其妙呀——“按照字节数量截取部分字符串,组成新的一个字符”——截取的部分字符串,怎么组成一个字符??JS按照UTF16编码,即一个字符占两个字节,不过在JS里你最好忘记“字节”的概念,只计算字符个数就够了,不要管每个字符占多少字节。

说一下思路:因为中文字符是双字节字符,可以查看汉字的unicode编码的范围(各种语言在unicode中都有一个范围),如果在这个范围内就是汉字,如果不在这个范围内,就是不是汉字。

中文的unicode的范围是:\u4e00-\u9FA5

所以正则可以写成:

var re=/^[\u4E00-\u9FA5\uF900-\uFA2D]*$/

if(re.test(str))

{

alert("是汉字!")

}

else

{

alert("不是汉字!")

}

按字符算的话,不管是字母、数字、符号,还是汉字,都是按一个字符算的,楼上说的“中文算俩字符长度”是错误的。

如果是按字节来算的话,则要根据页面的编码来定,比如gb2312,字母、数字、符号等算一个字节,汉字是两个字节;如果是utf-8,则汉字可能是2个、3个或4个字节(常见的是3个字节);如果是utf-16,则不管是字母、数字、符号,还是汉字,都是2个字节;等等。