java - tomcat Web 应用程序上的表情符号问题

标签 java mysql hibernate tomcat emoji

我在数据库中存储表情符号时遇到问题。我有一个连接到 RDS Mysql 数据库(5.5+ 版本)的 tomcat Web 应用程序所以基本上只要有表情符号,hibernate 就会引发异常

org.hibernate.exception.GenericJDBCException: could not insert: [pojos.hibernate.Comment]

原因是

java.sql.SQLException: Incorrect string value: \xF0\x9F\x98\x80\xF0\x9F...' for column 'text' at row 1

这是 hibernate 连接配置:

<property name="hibernate. connection. driver_class">com. mysql. jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://XXXXXXXXX:3306/XXXXXX?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf-8</property>
<property name="hibernate.connection.username">XXXXXXX</property>
<property name="hibernate.connection.password">XXXXXXX</property> 
<property name="hibernate.connection.CharSet">utf8mb4</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>

这是表格信息:

CREATE TABLE `comment` (
  `idcomment` int(11) NOT NULL AUTO_INCREMENT,
  `text` mediumtext COLLATE utf8mb4_bin,
  `date` datetime DEFAULT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=2936 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

我正在尝试将表情符号存储在文本列中,但没有成功。

我还尝试从连接字符串中删除 autoReconnect=true&useUnicode=true&characterEncoding=utf-8 并保留其他属性,但它没有用。我还将数据库和所有表的编码更改为 utf8mb4,但得到了同样的错误。

我找遍了,但没有运气。有什么建议 ?

最佳答案

我有一个类似的问题,这是因为我的 webapp 和 mysql 之间的连接不是使用 utf8mb4 建立的。我将以下几行放在我的 my.cnf 中,它起作用了!

让我知道它是否适合您!

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = TRUE
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

关于java - tomcat Web 应用程序上的表情符号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119909/

相关文章:

java - 如何在持久化之前不设置 Id 的情况下使用新的实体对象?

java - 日历的 hibernate @CreationTimestamp @UpdateTimestamp

javax.persistence.OptimisticLockException + org.hibernate.StaleObjectStateException 异常

java - Spring MVC validator 注解 + 自定义验证

java - Eclipse 3.8 和 4.2 有什么区别?

java - 最小生成树抛出 NullPointerException

php - mysql更新语句改变了我的参数值

mysql - 未使用空间索引

java - hibernate - spring/bean 映射集

java - 如何使 `@Endpoint(id = "health")` 在 Spring Boot 2.0 中工作?