欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解决jquery ajax中文传递到后端出现乱码问题 java

程序员文章站 2022-03-08 13:25:27
这几天,好久没有写过了,今天一个ajax提交中文乱码的问题需要解决,在徘徊了一天,看到了一个人的高见,必杀技解决了这个问题,页面有个中文搜索需要传递到后台,发现,无论是jquery的post还是get都会出现中文乱码,有人说可以采用encodeURI对中文编码,是的这个是个好的办法,但是也存在着问题,后台服务器解码后通过:new String(传过来的参数.getBytes("ISO8859...

        这几天,好久没有写过了,今天一个ajax提交中文乱码的问题需要解决,在徘徊了一天,看到了一个人的高见,必杀技解决了这个问题,页面有个中文搜索需要传递到后台,发现jquery都会出现中文乱码,有人说可以采用encodeURI对中文编码,是的这个是个好的办法,但是也存在着问题,后台服务器解码后通过: new String(传过来的参数.getBytes("ISO8859_1"),"UTF-8")这样转换回来,这样能转换成功的前提是,我们知道服务器采用了ISO8859_1编码,如果不是,这样我们就只剩下干瞪眼了,在解决这个问题间,我在别人的一个发帖的回复中,看到了一个牛人提出的一个必杀技,称之为必杀技确实它可以顺利解决你中文在页面编码一次,后台就能直接通过服务器解码得到中文,连那个string编码转换都省了,附上他的必杀技:在tomcat的server.xml中的

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>这段中加上 URIEncoding="utf-8",这个确实是个好想法,但是公司的人员都是人来人往,可能开发的人知道把这个tomcat的配置加上这个,但是某天换了一个人,tomcat重新部署,可以这个注意项可能就遗忘在漫漫的岁月中了,况且可能将来的someday,不用tomcat这个问题又会出现,虽然效果是挺好,但是后遗症比较麻烦,在一个人的博客中看到了一个方式,这个方式我比较推崇,真是一个一劳永逸的方式,简单说说这个原理,那就是对中文的字段在前端进行编码两次,英文编码后传到后台是什么就是什么,编码一次,到后台服务器自动解码,这样中文会因为服务器的默认编码发生变化,两次编码的话服务器解码一次,还剩一次编码,这样不会因为服务器的编码而发生编码(因为编码后都是数字和字母以及%),这样再解码一次,就可以转换为中文了。这样就绕过了不知道到服务器的默认编码是什么的问题。完美解决。附上,前端编码与后端解码的语句:

前端编码两次:encodeURI(encodeURI(要编码的中文),'')

后端解码:URLDecoder.decode(request.getParameter(对应的字段名称), "UTF-8")

或者把请求方式变为post也能解决这个问题,想后端通过http的方式调用远程的接口,可以把中文编码,对header中加入

httpGet.setHeader("Content-Type","application/text; charset=UTF-8");这样相当于告诉了接收方字符的类型和编码方式。


本文地址:https://blog.csdn.net/lilovfly/article/details/70256383