有一次在开发JavaEE的时候,需要用到MySQL,当时的服务器使用的是linux,我把所有的东西都写好了,但是在界面上出现的字符总是“???”,当时以为是数据库存放的编码不对!我发现mysql中的数据库编码也是utf8(我在struts2中配置的是utf-8)
当时很头疼,做了很长时间的javaEE,怎么还有这样的问题存在,当时查了很多资料,感觉都不能满意,终于有一次在google上面看英文的解说(英语不好,一般都是跳过英文的),老外的意思是需要在Hibernate连接数据库的字符串里面追加字符编码格式,比如请求hello这个数据库,那么请求的连接字符是:
<property name="connection.url"> jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8 </property>
但是连接了,发现界面和后台答应出来的还是“???”,.当时特别郁闷,没办法,还是继续看国外的一些文章,最后终于明白,这种写法是没有问题的,关键的错误问题的存在“&”,要把上面的“&”修改为“&”,我实验了一些,结果这种方式的确可以解决“??”这种情况
完整的写法:jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8
所以以后大家如果出现了这种问题,就需要为Hibernate的连接url添加字符编码了哦!