日期:2014-05-17  浏览次数:20787 次

上传文件获取客户端普通参数有中文时的问题

ServletInputStream sis = request.getInputStream();
String k;
if ((k = s.indexOf("name=\"")) != -1) {
   String fieldName = s.substring(k + 6, s.length() - 3);
   //sis.readLine(b, 0, b.length);
   StringBuilder fieldValue = new StringBuilder(b.length);
   while ((a = sis.readLine(b, 0, b.length)) != -1) {
         s = new String(b, 0, a -2);
         if ((b[0] == 45) && (b[1] == 45) && (b[2] == 45)
              && (b[3] == 45) && (b[4] == 45)) {
              break;
          } else {
              fieldValue.append(s);
          }
    }
    fields.put(fieldName, fieldValue.toString());
}

通过MULTIPART/FORM-DATA上传文件,
有一个问题,当提交的普通字段value中有中文的时候,如果中文字符数是双数,就可以正常显示,如果是单数,那么最后一个字符就会显示成乱码,

比如value="中国人"的时候人字就会显示成乱码,value="中国",那么就会正常显示

怎么整,谢谢....

------解决方案--------------------
你用的是什么字符集呀?UTF8?我觉得可能是截取的时候出了问题吧,你用的是byte[]数组进行操作的,不同字符集相同的String,getBytes[]的到的byte[]长度不一样。