url传递中文参数笔录


url传递中文参数笔录

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

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

1、首先用JS的encodeURI的方法作一些转换,如下
  
passName = encodeURI(name);

   转换之后的字符会产生一些"%"字符,而这一些字符在URL的时候通常是不能传递的,或者通常出问题的;所以我下一步这样做:
           
  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);
		}

  在定义了一个ReplaceAll函数后,我们接着可以这样写:
 
passName = ReplaceAll(passName,"%","_PERCENT_");

  这个时候,前台转化的工作完成,就把passName挂到链接中去即可啦.

2、接下来就是后台方面的工作啦:
   根据参数取得值,然后再用String的repaceAll方法把值转换回来。
 
 name = request.getParameter("name").replaceAll("_PERCENT_", "%");

   这样就行了吗?还差一步啦,接着就用java的URLDecoder.decode转换一下就大功告成啦,没有什么复杂的东西啦.
 
 name = URLDecoder.decode(name,"UTF-8");


总结:url传递中文参数最好解决办法就是---不要在url传递中文参数


你可能感兴趣的:(工作,jsp)