StringBuffer sb = new StringBuffer();
String s = "123456";
for (int i = 0; i < s.length(); i++) 
{
   char c = s.charAt(i);
   if (c >= 0 && c <= 255) 
   {
sb.append(c);
   }
   else
   {……} 
}上述代码编译通过,但是执行的时候报错如下:
 SRVE0026E: [Servlet 错误]-[java.lang.StringBuffer: method append&#40;Ljava/lang/String&#59;&#41;Ljava/lang/AbstractStringBuilder&#59; not found]:java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found我用的是JDK 1.5

解决方案 »

  1.   

    搞错了,我重新找了一个地方做测试,发现的确不是这个问题.其实是这样的,我做了一个自动转UTF8的函数如下:
    public static String toUtf8String(String s)
    {

    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    if (c >= 0 && c <= 255)
    {

    sb.append(c);

    else 
    {
    byte[] b;
    try {
    b = String.valueOf(c).getBytes("utf-8");
    } catch (Exception ex) {
    System.out.println(ex); 
    b = new byte[0];
    }
    for (int j = 0; j < b.length; j++) {
    int k = b[j];
    if (k < 0)
    k += 256;
    sb.append("%" + Integer.toHexString(k).toUpperCase());

    }
    }
    }
    return sb.toString();

    }在1.4下编译,没有问题,在1.5下编译,就提示sb.append(c)处就提示‘未处理的异常类型IOException’,编译不通过,可是添加了抛出IOException后,编译通过,但是调用这个函数,依然报错如帖子开始所言。
    奇怪啊!
      

  2.   

    解决了,问题出在别的地方,这段代码没关系,解决问题第一。
    我用java.net.URLEncoder.encode(req.getParameter("newname"),"utf-8")转化了,没那么麻烦,避免了刚才那个问题,谢谢诸位!