gpt4 book ai didi

java - 将对象持久保存到 MySQL 数据库时,Hibernate 不会编码 UTF-8

转载 作者:行者123 更新时间:2023-11-29 07:29:29 25 4
gpt4 key购买 nike

我正在创建一个 Spring MVC Web 应用程序。 Hibernate 保存到 MySQL 数据库的对象编码错误。数据来自 .jsp 页面表单,并使用 POST 方法传递到 Controller 方法。

我已经尝试应用建议的解决方案 herehere ,但它们似乎不起作用。

这是我在 JSP 页面上使用的 header :

<%@page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

这是我在应用程序中使用的数据库配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/database?useUnicode=yes&amp;characterEncoding=UTF-8
jdbc.username=root
jdbc.password=password

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=true

我还在 web.xml 文件中添加了一个 UTF-8 过滤器:

<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>

我还尝试通过在 MySQL Workbench 中运行命令来更改数据库的排序规则(尝试过 utf8、utf8_unicode_ci、utf8_polish_ci)。我也尝试仅更改一张表(包含 UTF-8 字符串的表)的排序规则。

这些都不起作用。 UTF-8 字符存储为“?”。我知道在持久化对象时发生了错误,因为我在持久化之前在控制台中打印了该对象,并且 UTF-8 显示正确。所以我假设问题出在 Hibernate 配置和/或 MySQL 数据库配置上。

如果有必要,我将提供额外的配置文件。

以下是所涉及表的 CREATE 语句:

CREATE TABLE `table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`string` varchar(255) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

最佳答案

你在 mysql 上正确设置了排序规则吗?可以使用以下语句进行检查:

show variables like 'character%';
show variables like 'collation%';

允许在 mysql 服务器上使用 unicode:

[mysqld]
character-set-server = utf8
character-set-filesystem = utf8

希望对您有所帮助。

关于java - 将对象持久保存到 MySQL 数据库时,Hibernate 不会编码 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com