你可以用charCodeAt()这个函数来判断一个字符是双字节还是单字节的
比如下面这个函数返回一个字符串的长度:function getLength(strValue) {
var len = 0;
for(var loop = 0; loop < strValue.length; loop++) {
len++;
if (strValue.charCodeAt(loop) > 255) {
len++;
}
}
return len;
}test:
getLength("safenet加密狗免费试用") = 21

解决方案 »

  1.   

    你要的是不是这个函数trimstr?
    <HTML>
    <HEAD>
    <TITLE>window.close</TITLE>
    <SCRIPT language="JavaScript">
       function trimstr(str,len){
       // 截取前len个字符  汉字视为两个 
       // 如果出现汉字被拆开的时候 不加改汉字 长度为len-1
          var total=0;var ret="";
          for(var i=0;i<str.length;i++){
             var nc=str.charCodeAt(i);
     var m=(nc>255)?2:1;
     if( total+m <= len ){
       ret+=str.charAt(i);
       total+=m;
     }else{
       return ret;
     }
      }
      return ret;
       }
       var s="我们dd的y平dd的会议dd的r";
       alert(trimstr(s,18));
    </SCRIPT>
    </HEAD><BODY>
    <input type="hidden" name="input1" value="aaaa\nbbbb">
    </BODY>
    </HTML>
      

  2.   

    function Blength(sString)
    {
    var Cnt= 0;
    var i; for(i = 0; i < sString.length; i++)
    {
    if((( sString.charCodeAt(i) >= 00) && (sString.charCodeAt(i) <= 126  )) ||
      (( sString.charCodeAt(i) >= 65377) && (sString.charCodeAt(i) <= 65424)))
    {
    Cnt = Cnt +1;
    }
    else
    {
    Cnt = Cnt +2;
    }
    }
    return Cnt;
    }