项目中应该尽量的避免中文参数的传递,但是如果必须需要传递中文参数时,就必须进行相关的设置来避免中文参数的乱码问题。
那基于struts框架的web 项目为例
1. web.xml文件配置
利用过滤器修改request 编码格式
定义filter
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<display-name>CharacterEncodingFilter</display-name>
<description>Spring CharacterEncodingFilter</description>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2. struts.xml
指定web应用的默认代码集
<constant name="struts.i18n.encoding" value="UTF-8" />
3. jsp等前端页面
<%@ page contentType="text/html;charset=UTF-8" %>
配置完上述参数后,本以为能解决问题,可是参数还是乱码,最后终于发现,web服务器也要配置,我用的tomcat 5.5
4. tomcat 配置
打开 tomcatHome/conf/server.xml 文件
在端口设置后加上 URIEncoding="UTF-8"。
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
如此整个设置过程结束,乱码问题解决。如有说的不对的地方,大家请指正