SSH+mysql中的乱码处理除了常用的新建数据库,数据库表时编码格式和java,jsp的编码格式一致外,还有:
1.在struts配置文件中配置全局的编码方式:
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
2.在web.xml添加对编码方式的拦截
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<!-- 初始编码配置 -->
<init-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- 结束-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.在配置数据源时在数据库URL上加上编码格式:
jdbc:mysql://localhost:3306/photo?useUnicode=true&characterEncoding=UTF-8
注意:以上的配置方式放在.properties中是可以的但是如果放在.xml中是不行的会报错:
The reference to entity "characterEncoding" must end with the ';' delimiter.
需要修改成
jdbc:mysql://localhost:3306/photo?useUnicode=true&characterEncoding=UTF-8
下面给出xml中一些特殊符号的编码转换: