今天在处理网站搜索功能的时候发现表单get提交之后数据传到后台总是会出现乱码,以下列出一些可以解决乱码问题的方法:
1、 添加过滤器,在web.xml中对字符集进行过滤,这个针对于post提交
<!--编码过滤器 -->
<filter>
<filter-name>encoding-filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!--强制转换编码(request和response均适用) -->
<init-param>
<param-name>ForceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding-filter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
2、 在提交数据之前对数据进行编码转换,js 端用encodeURI或者encodeURIComponent ,后台做相应的URLDecoder解码。
3、在web容器端作编码处理,例如tomcat,tomcat 默认编码为iso8859-1,所以可修改tomcat的server.xml文件中的connector 配置其编码方式:
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
如果get提交修改这个还是无效,则有可能是项目中使用的是eclipse Servers中的tomcat配置,在eclipse中修改Servers中的server.xml就可以了(配置如上)。