前端汉字encode_中⽂乱码encodeURI来解决URL传递时的中
⽂问题
[size=large] 通过URL传中⽂参数时,在服务端后台获取到的值往往会出现乱码。解决⽅案有很多种。本⽂介绍如何通过encodeURI 来解决中⽂乱码问题。
⾸先,在前端页⾯准备参数的时候,需要对中⽂参数进⾏encode处理:var url = 'HelloWorldServlet?star_name='+
encodeURI(encodeURI("刘德华"));
window.open(url);
其次,在服务端后台程序代码中⽤java.Decoder进⾏解码,从⽽得到中⽂参数的真实值:String starName =
java.URLDecoder.Parameter("star_name"),"UTF-8");
⽬的达到了。哈哈,很简单吧。不过此时你可能有个疑问,前端在进⾏encode编码是,为什么⽤了两次encodeURI,⽽服务器后端在解码时只解了⼀次?
原因是:容器会默认帮你解⼀次码。
此时,你可能⼜要问了,既然容器会默认解⼀次码,那么为什么不直接在前端只进⾏⼀次encode,服务端程序直接
原因是:容器默认解码时采⽤的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码⽅式。这与你的应⽤的编码⽅式未必会⼀致。所以你直接获取的话可能会出现乱码。
当然也可以通过修改容器的默认编码,⽽实现“前端⼀次encode——后端直接获取”的途径获取中⽂参数。
例如:Tomcat的默认编码修改⽅式:
修改%TOMCAT_HOME%/l,到这⾏代码:
url编码处理在后⾯可以追加URIEncoding属性,例如:
如果不⽅便改容器默认编码⽅式,或者应⽤程序本⾝就有多种编码⽅式的话,还是采取本⽂给出的解决⽅案,通过“前端两次encode——后端⼀次decode”的途径获取中⽂参数吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论