<
script
>
alert (fucCheckLength( " 中国a " ));
function fucCheckLength(strTemp)
{
var i,sum;
sum = 0 ;
for (i = 0 ;i < strTemp.length;i ++ )
{
if ((strTemp.charCodeAt(i) >= 0 ) && (strTemp.charCodeAt(i) <= 255 ))
sum = sum + 1 ;
else
sum = sum + 2 ;
}
return sum;
}
< / script>
会得到结果是: 5
评论:
有时候我们需要5?
你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如 " 中国a " ,gbk / gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。
楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。
假设后台数据库是采用utf - 8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。
alert (fucCheckLength( " 中国a " ));
function fucCheckLength(strTemp)
{
var i,sum;
sum = 0 ;
for (i = 0 ;i < strTemp.length;i ++ )
{
if ((strTemp.charCodeAt(i) >= 0 ) && (strTemp.charCodeAt(i) <= 255 ))
sum = sum + 1 ;
else
sum = sum + 2 ;
}
return sum;
}
< / script>
会得到结果是: 5
评论:
有时候我们需要5?
你是指要得到的字节长度吧?请注意字节和字符的差异。而字节长度是和编码有关系的,比如 " 中国a " ,gbk / gb2312编码是5个字节,可是如果是utf-8,则是7个字节(utf-8下通常一个汉字3个字节)。
楼主似乎对字节长度的概念还不是很清楚,虽然一般情况下汉字字符大都使用gbk。但是不能把汉字和2个字节直接划上等号。
假设后台数据库是采用utf - 8保存数据,表结构中某个字段的长度是30个字节,那么用楼主你的这个函数,长度计算就出问题了。