gpt4 book ai didi

java - 使用 spring 应用程序的 hibernate 将表情符号 unicode 字符保存在 mysql 数据库中

转载 作者:行者123 更新时间:2023-11-29 02:45:04 24 4
gpt4 key购买 nike

我有一个使用 spring、hibernate 和 mysql 作为数据库开发的 Web 应用程序。

当我尝试从表单中输入像“😀”这样的表情符号 unicode 字符时,我遇到了像

这样的异常
SQL Error: 1366, SQLState: HY000
Incorrect string value: '\xF0\x9F\x98\x80' for column 'column_name' at row 1

Handler execution resulted in exception
org.springframework.orm.hibernate3.HibernateJdbcException: JDBC exception on Hibernate data access: SQLException for SQL [/* insert com.sdfasf.domain.ProductReport */ insert into product_report (issolved, isvalid, product_id, report_account_id, report_comment, report_date, solve_account_id, solve_comment, solve_date) values (?, ?, ?, ?, ?, ?, ?, ?, ?)]; SQL state [HY000]; error code [1366]; could not insert: [com.sdfasf.domain.ProductReport]; nested exception is org.hibernate.exception.GenericJDBCException: could not insert: [com.sdfasf.domain.ProductReport]
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:645)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:102)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368)

我像这样更改jdbc url

jdbc:mysql://${database.host}/${database.name}?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8mb4

数据库CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,表CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci和列整理utf8mb4_unicode_ci;

最佳答案

所以他们解决这个问题的方法是在您的 my.ini 中添加以下内容,然后重新启动 mysql 服务器。

character-set-server=utf8mb4
default-character-set=utf8mb4

如果您有需要迁移的数据库,请参阅此处:https://mathiasbynens.be/notes/mysql-utf8mb4

确保同时更新 hibernate 值:
<property name="hibernate.connection.CharSet" value="utf8mb4" />
<property name="hibernate.connection.characterEncoding" value="utf8mb4"/>
<property name="hibernate.connection.useUnicode" value="true"/>

关于java - 使用 spring 应用程序的 hibernate 将表情符号 unicode 字符保存在 mysql 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43848823/

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