URL中文参数乱码处理

版权声明: 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″即可。

猜你喜欢

转载自blog.csdn.net/qq_32939679/article/details/86321771