昨天在开发前端程序的时候,需要在iframe的URL中携带一个参数包含中文,测试时发现乱码了。
下面是乱码的效果:
经过各种查阅,发现问题是这样引起的:
Tomcat下默认的编码使用ISO8859-1,而我的页面指定了UTF8编码,这样造成了中文乱码。
解决办法有2种:
1.【推荐】修改Tomcat的server.xml文件,在如下位置增加 URIEncoding="UTF-8" ,如下图所示:
2.【不推荐】直接对URL进行编/解码,即:在前端jsp页面的URL上增加encodeURI(encodeURI(URL))进行编码,然后在服务端接收的controller中使用
URLDecoder.decode(XXX)对参数进行解码。如下图所示:
显然,第2种方式需要单独为每个包含中文的URL设置编码和解码,不如使用第1种方式简单,实际项目中并不推荐。