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

mysql 专栏收录该内容
1 篇文章 0 订阅

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

具体的操作就不说了网上都是一样的,主要是要设置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开始生效了。

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

 

  • 3
    点赞
  • 2
    评论
  • 3
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论2
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

杰猿

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值