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&amp;characterEncoding=UTF-8

下面给出xml中一些特殊符号的编码转换:

 &lt;  <  小于号
 &gt;  >  大于号
 &amp;  &  and字符
 &apos;  '  单引号
 &quot;  "  双引号