/*
作者:何志强[[email protected]]
日期:2000-08-18
版本:1.0
功能:获取以字节计算的字符串长度
*/function bytelen(str){
   var i,len,ret;   if(str==null) return 0;   str = "" + str;
   len = str.length;   ret = 0;
   for(i=0;i<len;i++){
      if(str.charCodeAt(i)<0x80) ret++;
      else ret += 2;
   }   return ret;
}

解决方案 »

  1.   

    这里有个用ASP写的,:)<Script Language="VBScript" Runat="Server">
    '作者:何志强[[email protected]]
    '日期:2000-09-29
    '版本:1.0
    '功能:将一个字符串转换成不超过特定长度(以字节计算)的字符串Function FixLenString(str,fixlen)
    Dim lenStr,lenByte,lenFix
    Dim i

    str = str & ""

    lenStr = Len(str)+1
    lenByte = 0
    lenFix = 0
    i = 1
    Do While i<lenStr And lenByte<fixlen
    lenByte = lenByte + 1
    If Asc(Mid(str,i,1))<0 Then
    If lenByte<fixlen Then
    lenByte = lenByte + 1
    Else
    Exit Do
    End If
    End If
    lenFix = lenFix + 1
    i = i + 1
    Loop 

    FixLenString = Left(str,lenFix)
    End Function
    </Script>
      

  2.   

    是英文字符不是有ASCII值,你先取出作个判断不就行了,在这个ASCII范围内,是英文字符长度就加1,不是这个ASCII值内的就加长度2,然后作个比较小于20,就显示,反之加省略号,可以这样试试,
      

  3.   

    getBytes(String)得到的数组长度就是了
      

  4.   

    snmmc(冬瓜(菜鸟版))
    给段代码行吗?
      

  5.   

    String s="残酷飞机大反对432423"
    System.out.print(s.length());  
    byte []b=s.getBytes();
    System.out.print(b.length);