Tomcat编码--前端传值到后台 乱码

情景再现:

 前段时间做个查询,查询条件在前端页面中是正常的汉字,在js中alert()出来也是正常的。但是传到后台汉字乱码了。。

当时不知道是什么原因导致的,
因为jsp页面加了编码:pageEncoding <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
后来我觉得可能是url加密了url encoding了,然后我在后台将接收的乱码字符串decoding反编码,但是还是乱码!!
给我烦的一个头两个大,后来病急乱投医:

BalanceErrorLogParam param;
String str1 = JSON.toJSONString(param);
String newStr = new String(str1.getBytes("ISO-8859-1"), "UTF-8");
BalanceErrorLogParam param1 = JSON.parseObject(newStr, BalanceErrorLogParam.class);

将接收到的实体重新编码,把认识的编码格式挨个试了一遍,发现iso-8859-1格式是对的,然后本地就这么个蠢方法放这了。
项目发布到服务器上,测试妹子说,这个查询查不出来啊,我想肯定乱码了,,
本地和服务器上版本都是tomcat7,只是tomcat的配置不同,缩小了范围就好办了,比对两个server.xml

最终解决办法:

利用request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效!
要设置GET的编码,可以修改server.xml文件中,
相应的端口的Connector的属性:URIEncoding="UTF-8"
这样,GET方式提交的数据才会被正确解码。

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

这也让我知道了,tomcat7不配置URIEncoding,它的默认值是ISO-8859-1

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容