当前位置: 代码迷 >> Web前端 >> 30秒让你解决令你头疼的传址中文乱码的有关问题
  详细解决方案

30秒让你解决令你头疼的传址中文乱码的有关问题

热度:157   发布时间:2012-10-21 09:00:07.0
30秒让你解决令你头疼的传址中文乱码的问题
     中文传址乱码是我今晚头疼的事情,不过还是把它弄好了。其中的原理我就不介绍了,我只告诉大家如何用。
     
      1.js的window.location.href的中文传址乱码的问题解决方案,例子:

          
    
       html页面:<b onclick="aa('我爱你')"></b>

      <script type="text/javascript">   
     
         function aa(message){
             var url="setFriendsGroupAction?";
             window.location.href=url+"message1="+ encodeURI(encodeURI(message));

}
     </script>               
     

总结:encodeURI(encodeURI(参数)),这是一个二次转换。后台的Java类里面获取的message1则不再是中文乱码。

      2.超链接的<a href=""></a>的中文传址乱码的问题解决方案,例子:
     

       html的页面:<a href="lookFriendsAction_lookFriendsGroup?group=其他">其他</a>        
       
       action类里面的Java代码:
  public String lookFriendsGroup()throws UnsupportedEncodingException {

		     String group1=new String(group.getBytes("ISO-8859-1"),"utf-8"); //处理中文乱码的代码
		     System.out.println(group1);

		     userId = (Integer) ((User) ActionContext.getContext().getSession().get(
		"user")).getUserId();// 获取session中的用户id

		list = friendsService.lookFriendsGroup(userId,group1);
		return "lookFriendsGroup";
	}
     


总结,处理超链接:<a href="lookFriendsAction_lookFriendsGroup?group=其他">中的group的“其他”的中文乱码是由Java类里面的new String(group.getBytes("ISO-8859-1"),"utf-8"); 代码来处理的。在这里强调一下,如果你的jsp页面定义的是utf-8的格式的话,那么(group.getBytes("ISO-8859-1"),"utf-8")为utf-8,而不能为GBK,不然会出错的。谨记。

     
  相关解决方案