以下文本框计算出实际长度,汉字2字节<br>
<input type=text name=txt>
<input type=button value=ok onclick="cc()">
<script language=javascript>
function cc()
{
  var j = 0;
  var s = document.all.txt.value;
  if (s=="")return;
  if (/[^\x00-\xff]/g.test(s)) alert("含有汉字");
  else alert("全是字符");
  for (var i=0; i<s.length; i++)
  {
      if (s.substr(i,1).charCodeAt(0)>255) j = j + 2;
      else j++
  }
  alert("字符数:"+j);
}
</script>

解决方案 »

  1.   

    有什么问题可以上msn找我,我的email是[email protected]
      

  2.   

    vivanboy(被迫早起的鸟儿)(★★★★★) 有这样一个回答:
    <?
    function checkGBK($str,$lenStart,$lenEnd){//检查是否符合规定长度的gbk汉字
    $strLen=strlen($str)/2;
    if($strLen>$lenEnd||$strLen<$lenStart) return false;
    for($n=0;$n<strlen($str);$n+=2){
    $fs=ord($str[$n]);
    $ss=ord($str[$n+1]);
    if(!(($fs>175&&$fs<248&&$ss>160&&$ss<255)||($fs>128&&$fs<161&&$ss>63&&$ss<255)||($fs>169&&$fs<255&&$ss>63&&$ss<161)))  return false;
    }
    return true;
    }function checkGB2312($str,$lenStart,$lenEnd){//检查是否符合规定长度的gb2312汉字
    $strLen=strlen($str)/2;
    if($strLen>$lenEnd||$strLen<$lenStart) return false;
    for($n=0;$n<strlen($str);$n+=2){
    $fs=ord($str[$n]);
    $ss=ord($str[$n+1]);
    if(!($fs>175&&$fs<248&&$ss>160&&$ss<255))  return false;
    }
    return true;
    }//由于gbk向后兼容gb2312,扩充了一些汉字,并包括所有繁体形式的简体字,而且现在浏览器也默认是gbk,所有建议使用第一个函数checkGBK()来验证
    //例:
    if(checkGBK("中国人",2,5)) echo "合法";
    else echo "不合法";
    ?>