Servlet中文乱码解决

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

网上很多资料说在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的时候已经错误转码了,之后再怎么转都是错的








评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值