JavaWeb开发中Request中文乱码的解决

JavaWeb开发中Request中文乱码的解决

(自己学习总结,勿喷。):
针对POST
一开始就设置:
request.setCharsetEncoder(“UTF-8”)我擦
或者针对于每一个getParameter(key),都这样写:
String username = request.getParameter(key);
byte [] buf = username.getBytes(“ISO8859-1”);
int len = buf.length;
username = new String(buf,0,len,“utf-8”);

	第一种方式:
		第一次调用getParameter(key),就会去解析request中代表请求体的字节缓冲区,默认调用的是getCharset()方法,得到的是"ISO8859-1",按照"ISO8859-1"的字符集编码去解析的,最终得到的数据就是乱码,getParameter得到的也就是乱码。而request.setCharsetEncoder("UTF-8")就是设置request的字符及编码为utf-8,getCharset方法得到的就是utf-8,最终按照utf-8编码解析字节缓冲区,所得到的就是正常的中文
	第二种方式:
		在已经乱码的情况下,通过默认编码(iso8859-1)得到字节数组,再重新使用utf-8进行编码.
针对GET请求:
	tomcat8及以上版本内部已经解决.
	tomcat8以下:
		因为在请求地址里面不能有中文,所以请求地址会URL编码将中文转化为例如"%5E%6A"的格式,而get请求我们的请求参数是放在了请求地址中的,所以也会被URL编码。那么我们调用getParameter(key)得到的就是"%5E%6A"的形式,所以就应该利用java.net包下的	URLDecoder类的静态方法decode(URL编码的字符串, 解码用的字符集) 进行解码
		所以GET请求解决中文乱码就是:
		URLDecoder.decode(getParameter(key), "utf-8") .

欢迎大佬修正…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值