网上很多资料说在doPost方法里面加入下面两句可以将解决,
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
但是我的response的乱码解决了,request接收到的中文还是乱码,那么下面的代码可能解决问题
Charset charset = Charset.forName("GBK");
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(),charset));//指定字符集
String line = null;
String receiveMsg = "";
while ((line = reader.readLine()) != null) {
line = new String(line.getBytes(charset), "UTF-8");
receiveMsg += line;
}
可能的原因
在没有指定字符集时,
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
line = reader.readLine()
读取出来的字符串打印成十六进制中文显示成0x3f, 十进制是63,这就是说从流读取出来转为String的时候已经错误转码了,之后再怎么转都是错的

本文探讨了解决HTTP请求中出现的中文乱码问题,提供了具体的代码示例来说明如何正确设置字符集以避免乱码,并解释了乱码产生的原因。
1万+

被折叠的 条评论
为什么被折叠?



