一、需求
在web开发过程中,通常我们会遇到请求url地址带有中文参数,这些中文参数一到后端就变成乱码。
这时我们需要进行处理。
二、问题原因
出现乱码的原因,很明显是编码不对。原因在于tomcat连接器默认的编码是“iso8859-1”,而中文需要
用unicode、gbk或gb2312才能正确显示。
三、解决问题
明白了tomcat连接器编码及乱码原因后,解决中文乱码就很容易了,只要保证两端编码一致且能正常
显示中文即可。
方式一(不改代码,改tomcat):
修改tomcat连接器的默认编码,将“iso8859-1”改为”UTF-8“,
具体操作是,将 URIEncoding="UTF-8" useBodyEncodingForURI="true" 添加到tomcat的conf目录下
server.xml中的Connector标签(所有在用的Connector标签都加)中,添加后即是:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
方式二(不改tomcat,改代码):
前台编码:在js中用encodeURI函数进行一次编码,即encodeURI(参数)
后台解码:参数=new String(参数.getBytes("iso8859-1"),"UTF-8");
方式三(不改tomcat,改代码):
前台编码:在js中用encodeURI函数进行两次编码,即encodeURI(encodeURI(参数))
后台解码:参数=URLDecoder.decode(参数,"UTF-8");