tomcat部署get和post请求乱码问题解决方法

默认情况下,Tomcat对请求采用的默认编码是ISO-8859-1, 这样我们提交的汉字被认为是ISO-8859-1的编码,所以在程序中接收时显示乱码 。  在过滤器中调用request.setCharacterEncoding("GBK"),那么Post上来的汉字将被认为是GBK编码,而 Tomcat5对于Get请求上来的编码并不根据过滤器的设定辨认编码方式,默认的依然是ISO-8859-1,所以,即使你的页面使用默认的编码方式进 行编码,然后使用ISO-8859-1进行解码,得到的结果也不对 。 

解决方法: 
在TOMCAT中的conf/server.xml中的<Connector中添加两个设置
useBodyEncodingForURI="true" //设置POST和GET使用相同编码
URIEncoding="UTF-8" //对URI使用utf-8编码处理

 

 

可以用String提供的编码转化测试,请求的参数值:

name = new String(name.getBytes("ISO8859-1"),"UTF-8").trim();

以上转自:http://blog.csdn.net/cuker919/article/details/6107469

更新:

post方式即使象上面那样配置,还是有一些问题。在客户端把发送的post请求设为utf-8,服务端还是要转成ISO-8859-1的比特流,然后再转成utf-8才不会乱码。代码如下:

 

 

client:
		OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(),"utf-8");
		out.write("&city=安庆");
		或者 
		OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
		out.write("&city="+URLEncoder.encode("安庆","utf-8")); 
sever:
		request.setCharacterEncoding("UTF-8");
               或者
 		String city = new String(request.getParameter("city").getBytes("ISO-8859-1"),"utf-8");
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值