JAVAScript和VBScript都是
中文是一个汉字算一个字符,因为一个字母算一个字符

解决方案 »

  1.   

    //检查字符串中的汉字,每个汉字按两个字节计算,字节数不能大于maxlen,且可为空
    function check_character2(theField,theAlert,maxlen)
    {
      var theValue=theField.value;
      if(theValue.length==0) return true;
      var bytelen=0;
      var re=/[^\x00-\xff]/g;
      re.compile();
      for(var i=0;i<theValue.length;i++){
       if(re.test(theValue.charAt(i)))
       {
         bytelen=bytelen+2;
       }else{
         bytelen+=1;
       }
      }
      if(bytelen>maxlen)
      {
        alert(theAlert+"输入长度大于"+maxlen+",请重新输入!");
        return false;
      }
      return true;
    }
      

  2.   

    感谢zhangfm你提供的代码,经过调试,发现还是存在一点点问题,汉字已经可以算成两个字符了,但是英文却不能正确的算成一个字符,而是错误的算成两个字符。后将re.compile();这一行代码注释掉,一切正常!
      

  3.   

    输入字符,提示字节数<input type="text" name="w" size="20"><input type="submit" name="B1" onclick="alert(w.value.replace(/[^\x00-\xff]/g,'**').length)">
      

  4.   

    不一定是中文才算两个字节,全角字符也会被算成两个字节。先把所有全角字符转化成半角,然后再取其length就可以知道字符串的长度了。
    // 全角文字,半角文字的长度計算
    function getLength(sCheck) {
         var n = 0;
             // 全角字符转化成半角
         var str = toHankaku(sCheck);
         var len = str.length;
        for (var i = 0; i < len; i++) {
                      // MSIE环境的全角文字判断
            n += checkMZenKaKu(str.charAt(i)) ? 2 : 1;
            }
       return n;
        }