当我们获取RequestInputStream时,里面如果有中文会显示乱码,在使用request.setCharacterEncoding("UTF-8");后也无济于事
我在查阅网上相关解决方案后,自己编写了一个类RequestInputStreamEncoding 里面有一个方法 public String getRequestInputStream(HttpServletRequest req)
调用此类的getRequestInputStream方法会返回正确编码的String串。
代码如下
<span style="font-size:18px;">package org.weixin.EncodingUtil;
import java.io.*;
import javax.servlet.http.HttpServletRequest;
public class RequestInputStreamEncoding {
public String getRequestInputStream(HttpServletRequest req) {
try {
req.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
StringBuilder buffer = new StringBuilder();
BufferedReader reader = null;
try {
reader = new BufferedReader(new InputStreamReader(
req.getInputStream(), "UTF-8"));
String line = null;
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != reader) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer.toString();
}
}
</span>