通过超链接及其提供的参数来实现分页查询功能时出现提交中文后servlet获取的值是??乱码

通过超链接及其提供的参数来实现分页查询功能时出现提交中文后servlet获取的值是??乱码的解决方法

示例:

<li title="下一页">
	<a href="${pageContext.request.contextPath}/product?method=searchProducts&pageNumber=${pb.pageNumber+1 }&spdesc=${spdesc}" aria-label="Next">
		<span aria-hidden="true">»</span>
	</a>
</li>//spdesc参数就是中文




一、出现的原因分析:

1.提交form表单时使用的时GET 方法提交(tomcat,默认,GET,ISO-8859-1,不是UTF-8等支持中文的编码方式);

2.提交form表单时忘记写提交方法了(method="post");

3.在JSP页面已经设置了支持中文的编码方式,同时也使用了过滤器来统一编码,结果还是出现了??这样的乱码。


二、解决方法

其中1、2的问题还好解决,就是问题3的解决方法要麻烦些。问题3的解决方法如下:

打开tomcat的配置文件:server.xml【tomcat的所在的目录:如,D:\Java\apache-tomcat-8.5.23\conf\server.xml】,进行如下配置:在Connector标签添加URIEncoding="UTF-8"和 useBodyEncodingForURI="true",效果如图:



问题3出现的具体原因是:超链接的提交方式为Get,而Get方式提交的编码方式不是支持中文的编码方式,所以在Connector标签添加URIEncoding="UTF-8" 和 useBodyEncodingForURI="true"是为了将以GET提交的编码默认修改成为UTF-8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值