java插入mysql数据库的中文,在后台看都是好的,没有乱码,但一入库就变成?问号了。
为此,查了很多资料,说要修改mysql数据库建库及建表时的编码,于是我都检查及相应修改了,还是不行;
说要修改mysql的配置文件my.ini 修改原来的配置改为default-character-set=utf8 ,而我的配置文件里根本没有这一项,而加上这一项还启动不了数据库。
还有说要改java与mysql数据库连接语句,于是我修改了,在数据库连接加上这个语句:?useUnicode=true&characterEncoding=UTF-8 ,加了之后tomcat都启动不了,我在想问题应该出在这里,应该还有别的连接方法,于是我在网上找终于找到另一个连接语句:?useUnicode=true&characterEncoding=UTF-8加上后就成了!
我的数据库连接用的是proxool,我把proxool.xml这个文件代码贴出来大家参考吧:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>MysqlDS</alias>
<driver-url>jdbc:mysql://127.0.0.1:3306/SZJX?useUnicode=true&characterEncoding=UTF-8</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value=""/>
</driver-properties>
<!--最小连接数(默认2个)-->
<minimum-connection-count>20</minimum-connection-count>
<!--最大连接数(默认5个),超过了这个连接数,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定 -->
<maximum-connection-count>200</maximum-connection-count>
<!--没有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->
<maximum-new-connections>20</maximum-new-connections>
<!--用于保持连接的测试语句 -->
<house-keeping-test-sql>select sysdate from dual</house-keeping-test-sql>
</proxool>
</something-else-entirely>
主要是加了上面红字那一段,中文乱码问题解决。
谢谢这位博友的文章:
http://blog.csdn.net/lion_6/article/details/1540510