在页面控件中MaxLength控制的是字符数量,所以在页面中得到的汉字,数字,字母的Length都是1,但是在数据库中汉字是2。
当要在页面做限制是,原理:
该字符在Unicode字符集中的编码值来进行比较。例如,字符A的编码是65,字符B的编码是66,依此类推。小写字母从97开始编码,即字母a的编码是97,字母b的编码是98,依此类推。数字字符则是从48开始编码,字符0的编码是48,而字符9的编码是57。还有一些特殊符号如+、-等,在此就不举例了。
我们使用charCodeAt(char)来得到变量char所对应的Unicode编码,根据上面所描述的,英文、数字及一些特殊符号的Unicode编码是已知的,而且有一个范围,因此可以认为,不在此范围之内的字符,都可认为它是汉字,按长度为2来计算。
处理方式:
function a()
{
var b="厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1";
alert("长度" + getLength(b));
}
function getLength(str)
{
var len = str.length;
var reLen = 0;
for (var i = 0; i < len; i++)
{
if (str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126)
{
// 全角
reLen += 2;
}
else {
reLen++;
}
}
return reLen;
}