url传参数出现中文乱码,怎么解决?

JavaScript015

url传参数出现中文乱码,怎么解决?,第1张

一般出现乱码都是在js裏面跳转到哪个类 然後得到这个参数的时候中文乱码,有一个非常实用的办法,在js你可以这样写:var url=........url=encodeURI(url)url=encodeURI(url)//最重要的部分,两次调用encodeURI ,就是编码两次然後在跳转到url所在的类, 获取这个参数的方法如下:String name=request.getParameter("name")name=URLDecoder.decode(name,"utf8")这样就能解决乱码问题了,这种方法还没遇到过不能解决的乱码,

1.客户端提交时使用encodeURI或者encodeurIcompent参数来进行utf-8编码,然后发送给服务器,如果使用post方式的话可以通过request.setCharacterEncoding来设定用来解读参数的编码。如果用get方式的话,使用new String(arg.getBytes("iso-8859-1"),"utf-8")的方式来转码。

2.发送ajax请求时,请使用post方式,由于AJAX默认使用utf-8的编码提交参数,因此如果不是文件上传得话,为ajax的Content-Type请求头设置"application/x-www-form-urlencoded;charset="utf-8",以此来通知服务器,客户端发送参数所使用的编码。这样,服务器端可以直接通过String word = request.getParameter("word")来获取经过转码后的参数值,省去了request.setCharacterEncoding。

浏览器和服务器之间的编码格式是不同的,

要解决乱码问题有三种办法

如果是get请求,可以在tomcat根文件下找到一个server.xml文件

在其第65行后加上URIEncoding="UTF-8"

如果是post请求,可以通过request设置实体内容的解码方式为UTF-8

如:req.setCharacterEncoding("UTF-8")

如果希望get和post都可以,可以在servlet接收乱码String时,使用iso8859-1将其还原成byte再采用UTF-8将此byte转成String