我们经常会遇到这样的场景:在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来传递中文参数。
时间: 2024-10-06 00:07:42