Java URL传参中文乱码问题

我们经常会遇到这样的场景:在URL中传递参数,如果该参数为中文,如果设置不当,会出现乱码问题。

URL传参所使用的编码为服务器中设置的编码,而ajax请求的编码为页面编码。

如果不设置tomcat的默认编码为ISO-8859-1,而如果在设置中加入 useBodyEncodingForURI="true"

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" 
protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>

那么url中参数的编码就与页面编码一致。

如果页面编码为UTF-8,java后台编码为UTF-8,那么后台得到的参数就不会出现乱码问题。

如果不设置useBodyEncodingForURI="true",那么需要在java后台中,将ISO-8858-1编码的中文转换为UTF-8格式的。

new String(search_name.getBytes("ISO-8859-1"),"UTF-8");

上述方法虽然能解决URL传参中文乱码问题,但是依赖于Tomcat服务器配置,需要不同的业务逻辑进行处理,这样的话,同一个war包,部署到不同的服务器上会出现问题。

因此,尽量用ajax来传递中文参数。

你可能感兴趣的:(Java URL传参中文乱码问题)