基于struts的jsp中url中传递数组与中文编码

本文介绍了如何在URL中正确传递数组参数,并解决了中文字符在URL中的乱码问题。通过编码与解码的方法确保了中文参数能被正确解析。

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

今天做一个项目,遇到了两个问题,就是在URL中传递数组与url的中文乱码。

1、如数组String[] roleIds = (String[]) ((DynaActionForm) form).get("roleIds");

即从动态Form表单中得到一个数组,要将其做为条件加入到url中,

如已有条件为:condition = "&loginName="+loginName;

若直接写:condition +="roleIds="+roleIds;是肯定不对的,因为这样把roleIds数组做为了它的成员.

若写为:condition += "roleIds="+roleIds[0];则会知道只把此数组的第一个值传给了roleIds,但通过这我们可以想到,是否可以将数组拆分一下,将每个数据都加入Url中呢?答案是可以的。

如可以这样写:

//将数组传入url中
  if(roleIds != null){
   for(int i = 0; i< roleIds.length; i++){
           SearchCondition += "&roleIds="+roleIds[i]; 
   }

这样就把此数组加入到了url中。

2、中文乱码可以通过编解码来处理。

如userName是中文,

String userName = "我是中文";

将其加入url中作为搜索条件,则需要先编码:

condition +="&userName="+java.net.URLEncoder.encode(userName,"GB2312");

当通过request得到userName时,再通过解码得到中文:

String userName = request.getParameter("userName");

userName = java.net.URLDecoder.decode(userName,"GB2312");

需要注意的是:encode与decode的字符编码也相同,如都为:GB2312。且要与容器的编码同。

如:若容器是使用tomcat,则需修改其server.xml文件,在

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"  />

中加入URIEncoding="GB2312"

 

URIEncoding的编码与你编解码时的字符编码同,若为gb2312则都是gb2312,若为gbk,都为gbk。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值