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(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found]:java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found我用的是JDK 1.5
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(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found]:java.lang.NoSuchMethodError: java.lang.StringBuffer: method append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; not found我用的是JDK 1.5
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后,编译通过,但是调用这个函数,依然报错如帖子开始所言。
奇怪啊!
我用java.net.URLEncoder.encode(req.getParameter("newname"),"utf-8")转化了,没那么麻烦,避免了刚才那个问题,谢谢诸位!