解决ajax请求地址含中文参数

前端之家收集整理的这篇文章主要介绍了解决ajax请求地址含中文参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1:首先介绍了几个概念URL请求传递中文参数乱码

原以为escape() encodeURI() encodeURIComponent 这三个函数属于javascript,所以不管是解码还是编码都必须在页面中进行,以至于我想在服务器逻辑代码中解码不可行,但是其实是可行的,首先要知道这三个javascript的编码都是按照UTF-8来进行编码的,所以我可以猜想到,传递是编码是utf-8的那么肯定是显示中文正常的啦!但是在服务器端(tomcat)却是乱码,可见在tomcat中没有以utf-8的形式来接受,真实的情况是tomcat是以ISO-8859-1来接收的,这个时候,有多种方式可以来解决,一个是直接改变tomcat的编码方式,这样一劳永逸,但是我暂时不这样做,多犯错提醒自己总是好的!第二中也是常见的方式new String(xx.getBytes("ISO-8859-1"),“utf-8”)这样就将8859的码变为utf-8了

思路就是这样的,贴代码吧:

再多说一句,其实这个encodeURI(desc0); 的用处没有多大,只是保证了传过去的码是utf-8的,如果我的页面中能够保证是此编码的,就能正确的解码了

public String saveDescription(){ HttpServletRequest requestDesc=ServletActionContext.getRequest(); try { requestDesc.setCharacterEncoding("UTF-8");//这个没有用,我ajax用了encodeURI编码,需要在返回的页面中使用decodeURI解码--仔细想想这个也行不通 description=new String(description.getBytes("iso-8859-1"),"UTF-8"); } catch (UnsupportedEncodingExcep tion e) { // TODO Auto-generated catch block e.printStackTrace(); } //String desc=(String) requestDesc.getAttribute("desc"); requestDesc.getSession().setAttribute("description",description); System.out.println("收到描述:"+description); return null; }

猜你在找的Ajax相关文章