【问题标题】:Issue with emojis on a tomcat web applicationTomcat Web 应用程序上的表情符号问题
【发布时间】:2015-03-23 01:59:04
【问题描述】:

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

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

原因是

java.sql.SQLException:不正确的字符串值:\xF0\x9F\x98\x80\xF0\x9F...' for column 'text' at row 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;

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

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

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

【问题讨论】:

    标签: java mysql hibernate tomcat emoji


    【解决方案1】:

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

    【讨论】:

    • 事实上,这一切都是在服务器端设置的。连接字符串的问题。我只需要删除 ?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8 并添加 ` true ` 到休眠配置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多