URL中文参数乱码处理

本文介绍了在处理GET和POST请求中遇到的中文参数乱码问题,详细讲解了四种解决方案:1) 页面上的encodeURI方法;2) 将中文参数放入AJAX的data提交;3) 后台通过转换字节流解决;4) 在Tomcat配置中设置URIEncoding为UTF-8。通过这些方法,可以有效避免中文参数显示为问号的尴尬情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日常工作中,难免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″即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值