在tomcat Web应用程序上使用emojis的问题

时间:2015-01-23 22:40:37

标签: java mysql hibernate tomcat emoji

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

  

org.hibernate.exception.GenericJDBCException:无法插入:[pojos.hibernate.Comment]

原因是

  

java.sql.SQLException:字符串值不正确:\ xF0 \ x9F \ x98 \ x80 \ xF0 \ x9F ...'对于专栏' text'在第1行

这是休眠连接配置:

<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;

我正在尝试将emojis存储在文本列中,但没有运气。

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

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

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,这是因为我的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