hibernate下对mysql数据库插入中文时为问号的问题。

    因为这个问题查了一个晚上的百度和博客,最后终于解决了,第一次写博客希望有和我一样问题的人能够得到解答。

具体的操作就不说了网上都是一样的,主要是要设置eclipse和mysql的编码都是utf-8。以下的方法都是网上找的。

1.首先可能是编译器的编码有问题

可以通过以下的设置来设置utf-8

2.

更改数据库的编码格式


3.在application.properties中url库后添加后缀


或是修改hibernate的配置文件hibernate.cfg.xml,在配置文件配置hibernate.connection.url属性。示例:


<property name="hibernate.connection.url">
        <![CDATA[jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8]]>
</property>

注意:此字符串不能写为jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8,不然会出现编译错误,错误提示为将&连接符改为;。

4.通过show variables like'character%'; 的命令来查看数据库的编码格式


这是之前出问题的格式,这里可以看到如果character_set_server和character_set_database都不是utf-8的话都可能出问题。

最好是都改成一个格式。

Windows下可以通过my.ini 来更改。我的本地地址是C:\Program Files (x86)\MySQL\MySQL Server 5.5。仅供参考。


打开后可以将三个地方的default-character-set都设置为utf8,注意没有-,三个地方对应不同的character_set_



5.重点来了,以上都是我主要尝试过的方法。但是都没有用,我间断插入了近100条数据来测试,非常绝望。后来发现我的数据库运行show variables like'character%';后 character_set_client和character_set_connection都是latin1,这个编码格式肯定是不行的,不支持中文。但是我set names uft-8后可以短暂的将这些character_set全设置为utf-8,但是一旦重启navicat for mysql,又会回复原样。

  最后的最后,如果你上面的方法都尝试过了,character_set_client和character_set_connection一直无法永久设置为utf-8,我的解决方法是新建一个新的连接,新的连接后character_set_client和character_set_connection开始生效了。


这其实很简单,但是很多文章都没有说清楚,导致我纠结了一个晚上,所以如果你有和我一样的问题,你可以尝试一下新建一个新的连接,新的表或新的数据库,这样你的设置才会生效。


猜你喜欢

转载自blog.csdn.net/qq_35530005/article/details/80531746
今日推荐