【发布时间】:2017-10-06 12:36:45
【问题描述】:
我有一个使用 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;
【问题讨论】:
-
你解决过这个问题吗?
-
如果您使用的是 Connector/J dev.mysql.com/doc/connector-j/5.1/en/…
标签: java mysql spring hibernate unicode