url传递中文参数笔录

url传递中文参数笔录

我们在处理一些遗留系统的时候,通常有可能遇到处理有一些链接是带有中文,而且是传递到另一个页面的,而这另一个页面有可能把拿到的数据放到数据库中去,这时候往往会造成乱码的问题,特别在不同的系统的时候更是如此.

假定,我们现在有一个name的参数,能通过"/pages/a.jsp?name=博客"传递到下一个页面,这时候,我们可以这样做:

1、首先用JS的encodeURI的方法作一些转换,如下
[code]passName = encodeURI(name);[/code]
转换之后的字符会产生一些"%"字符,而这一些字符在URL的时候通常是不能传递的,或者通常出问题的;所以我下一步这样做:
[code] function ReplaceAll(oriStr,oldStr,newStr){
if(oriStr == null || oriStr == "")
return "";
if(oriStr.indexOf(oldStr) == -1)
return oriStr;
oriStr = oriStr.replace(oldStr,newStr);
return ReplaceAll(oriStr, oldStr, newStr);
}[/code]
在定义了一个ReplaceAll函数后,我们接着可以这样写:
[code]passName = ReplaceAll(passName,"%","_PERCENT_");[/code]
这个时候,前台转化的工作完成,就把passName挂到链接中去即可啦.

2、接下来就是后台方面的工作啦:
根据参数取得值,然后再用String的repaceAll方法把值转换回来。
[code] name = request.getParameter("name").replaceAll("_PERCENT_", "%");[/code]
这样就行了吗?还差一步啦,接着就用java的URLDecoder.decode转换一下就大功告成啦,没有什么复杂的东西啦.
[code] name = URLDecoder.decode(name,"UTF-8");[/code]

总结:url传递中文参数最好解决办法就是---不要在url传递中文参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值