如何用休眠模式将中文字符写入mysql?

时间:2018-11-09 15:12:18

标签: java mysql database hibernate encoding

im使用javascript制作Web应用程序。我正在使用Java servlet wich与带有休眠的mysql数据库连接。在Servlet中有一个中文字符串,当我尝试将该字符串写入mysql字段时,它显示为“?”在mysql中。我在netbeans中的整个项目都设置为charset = UTF-8。我试图将数据库中的排序规则和字符集设置为utf-8,utf8mb4,big5,但它们都不起作用。我还尝试将列从varchar更改为nvarchar,但是当我单击Apply(mysql工作台)时,该列仍为“ varchar”。

这是我的servlet

{{1}}

2 个答案:

答案 0 :(得分:1)

休眠XML:

<property name="hibernate.connection.CharSet">utf8mb4</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>

连接网址:

db.url=jdbc:mysql://localhost:3306/db_nameuseUnicode=true&character_set_server=utf8mb4

以上更改足以让我从utf8升级到utf8mb4字符集方案。

作为旁注,我想澄清一下,UTF-8是字符编码,而utf8mb4是MySQL支持的字符集。 MySQL的utf8mb4是MySQL的utf8的超集。

春季/冬眠过滤器:

<form accept-charset="UTF-8">

春季/冬眠:

<property name="url" value="jdbc:mysql://localhost:3306/miniprojetjee?useUnicode=true&connectionCollation=utf8_general_ci&characterSetResults=utf8&characterEncoding=utf-8"/> (or maybe it is =yes)

“春天”:

@RequestMapping(value = "/getRegion2", produces={"application/json; charset=UTF-8"},method = RequestMethod.GET)

答案 1 :(得分:0)

不知道你用的哪个版本的mysql,但是你需要配置mysql

character_set_server=utf8mb4

一些版本hibernate能够正确配置,但是一些版本需要你手动配置。