版权声明: https://blog.csdn.net/qq_32939679/article/details/86321771
在日常工作中,难免GET和POST请求中会传入中文,例如模糊查询中,我就差点掉入别人的坑。
代码如下:
JS:
url = "${ctx}/commonApply/openSendYear?codeInfo=${code}&busType=${proItemInfo.type}&busTypeName=${busTypeName}";
${busTypeName}
JAVA:String busTypeName = request.getParameter("busTypeName");
传入的是中文,传到后台是 "?" 。这个令我非常的尴尬。
解决乱码方法有如下方法:
一、从页面上解决:
- 1、encodeURI(url)
- url = encodeURI("${ctx}/commonApply/openSendYear?codeInfo=${code}&busType=${proItemInfo.type}&busTypeName=${busTypeName}";
- ${busTypeName}
- )
- 对整个URL进行编码,它采用的是UTF-8格式输出编码后的字符串。不过encodeURI除了ASCII编码外对于一些特殊的字符也不会进行编码如:! @ # $& * ( ) = : / ; ? + ‘。
- 2、作为data参数提交
- 如果是可以用AJAX实现的请求,可以将中文的参数放到data里面提交
- 3、页头上设置pageEncoding、contentType
-
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
二、后台代码解决
busTypeName = new String(name.getBytes("ISO-8859-1"),"UTF-8");
三、过滤器解决
代码略;
四、Tomcat解决
设置tomcat的URIEncoding
在默认情况下,tomcat服务器使用的是ISO-8859-1编码格式来编码的,URIEncoding参数对get请求的URL进行编码,所以我们只需要在tomcat的server.xml文件的<Connector>
标签中加上URIEncoding=”utf-8″即可。