这些天调试开发一个lucene项目,服务器是tomcat,数据库是mysql5,操作系统是xp,采用的是MVC架构,模式是采用Facade模式,总是出现乱码,页面字符集、数据库编码、tomcat、项目编码全部都是utf-8,可是没想到表单里提交的数据里的中文还是有乱码,经过思考,发现通过简单的数据库连接配置即可:
<!-- 配置DataSource数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="initialSize" value="10" />
<property name="maxActive" value="20" />
</bean>
我们在连接mysql数据库的时候一般都会在url后面添加useUnicode=true&characterEncoding=UTF-8 ,但是问什么要添加呢?
注意,如果你按照useUnicode=true&characterEncoding=UTF-8 这种而不是useUnicode=true&characterEncoding=UTF-8(注意两者的差别)配置来的话,IDE会报错,导致无法编译;
添加的作用是:指定字符的编码、解码格式。
例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:
1. 存数据时:
数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:
在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
注意:在xml配置文件中配置数据库 url 时,要使用&的转义字符也就是&
例如:<property name="url" value="jdbc:mysql://localhost:3306/email?useUnicode=true&characterEncoding=UTF-8" />
附:
HTML中常用的特殊字符:
最常用的字符实体(Character Entities)
显示结果 | 说明 | Entity Name | Entity Number |
---|---|---|---|
显示一个空格 | |   | |
< | 小于 | < | < |
> | 大于 | > | > |
& | &符号 | & | & |
" | 双引号 | " | " |
其他常用的字符实体(Character Entities)
显示结果 | 说明 | Entity Name | Entity Number |
---|---|---|---|
© | 版权 | © | © |
® | 注册商标 | ® | ® |
× | 乘号 | × | × |
÷ | 除号 | ÷ | ÷ |