之前用POST方式提交表单一直没有遇到中文乱码的方式,最近使用GET方式提交,发现中文乱码。 检测了struts.xml和web.xml等地方读配置好了
struts.xml
<constant name="struts.i18n.encoding" value="UTF-8" />
web.xml
<!-- 编码 -->
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
查了一些资料,问题出在于Tomcat的server.xml没有配置编码,添加URIEncoding="UTF-8"就可以了
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
但是我发现Eclipse 每次重新部署之后,之前配置的编码失效了,之前写进去的URIEncoding="UTF-8" 又没了。然后又找资料:
为什么会还原?
Tomcat服务器在Eclipse中启动时,会自动发布Eclipse中部署的项目,但是我的项目是自己手动在外面部署的,Eclipse只认得在它里面部署的项目,因此它会创建一个新的server.xml文件覆盖原来的文件,里面只有Eclipse中部署的项目。
有个办法可以解决:
方法一:
找到自己eclipse 里面的Servers 项目里面的server.xml文件。
然后再加上编码格式。
方法二: 你在Tomcat 的conf 文件夹下的server.xml 加上 URIEncoding="UTF-8" 编码格式后。在找到Eclipse 的Window-Preferences-Server-Launching,取消Automatically publish wen starting servers,点击OK,搞定。