当前位置: 首页 > 编程笔记 >

让Java后台MySQL数据库能够支持emoji表情的方法

宋健柏
2023-03-14
本文向大家介绍让Java后台MySQL数据库能够支持emoji表情的方法,包括了让Java后台MySQL数据库能够支持emoji表情的方法的使用技巧和注意事项,需要的朋友参考一下

前言

公司最近在开发中遇到一个问题,在弄帖子的发布与回复问题,然后再iOS端和Android端添加表情的时候都会出错

Caused by: java.sql.SQLException: Incorrect string value: '\xF6\x9D\x98\x84' for column 'comment' at row 1

提示表情有问题,然后赶紧查资料。

首先数据库编码为UTF-8,字段content设置为text(CHARSET=utf8 COLLATE=utf8_unicode_ci)用于存储帖子内容信息,现在上线新功能存储emoji表情,插入emoji表情就会报出上述错误,UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。utf8mb4兼容utf8,且比utf8能表示更多的字符,所以要设置数据库的编码为utf8mb4。

数据库编码从utf8设置为utf8mb4

1、修改my.cnf

[client]
default-character-set=utf8mb4
 
[mysql]
default-character-set=utf8mb4
 
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
character-set-client-handshake = false

2、对数据库相关的表进行字符集修改

将数据库转换为utf8mb4

ALTER DATABASE post CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
ALTER TABLE `post_article` MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3、重启数据库

sudo /etc/init.d/mysql restart

4、检查数据库的字符集是否是utf8mb4

SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';

5、java 设置

设置Java的数据库连接,将characterEncoding去掉,然后保证mysql connector版本高于5.1.13,就OK了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 本文向大家介绍java处理数据库不支持的emoji表情符问题解决,包括了java处理数据库不支持的emoji表情符问题解决的使用技巧和注意事项,需要的朋友参考一下 一般数据库的编码是utf8,utf8是不支持存储表情符的,当存入的微信昵称带有表情符时就会出现乱码情况,有两种解决方法: 1.mysql数据库升级到5.5版本以上,utf8改为utf8mb4,utf8mb4的字符最多可以是4个字节,可以

  • Django试图尽可能多的支持所有数据库后端的特性。然而,并不是所有数据库都一样,所以我们必须在支持哪些特性和做出哪些安全的假定上做出设计决策。 本文描述了一些Django使用数据库的有关特性。当然,它并不想成为各服务器指定的文档或者参考手册的替代品。 综合说明 持续连接特性 持续连接的特性避免了每一次重新建立与数据库的连接的请求中所增加的压力。这些连接通过 CONN_MAX_AGE 参数(控制一

  • 本文向大家介绍MySQL插入emoji表情失败问题的解决方法,包括了MySQL插入emoji表情失败问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 前言 之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题。最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常: 众所周知UTF-8是3个字节, 其中已经包括我们日常能见过的绝大多数字体. 但3

  • 1.16.1. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 1.16.2. PyMySQL安装 PyMySQL下载地址:https://github.com/PyMy

  • 我希望能够在使用HSQL的单元/集成测试中支持以下Sybase 15 ASE语法。。。 HSQL无法识别临时表的命名方式,并且对字符犹豫不决。相反,HSQL希望使用这样的东西… 或者,根据他们的文档,HSQL 也支持大多数 ANSI-92 SQL,但是 Sybase ASE 15 对 ANSI-92 SQL 没有很好的支持,包括如何创建临时表,因此以下内容在 Sybase 中不起作用,但在 HSQ

  • 1、启动MySQL管理工具.bat,并登录 2、选择菜单 工具 -> 用户管理 3、选择root,然后按下图所示选择“从任意地点访问” 4、保存[/fusion_text]

  • 我在搜索反应式关系数据库驱动程序时找到了R2DBC,但我看不到Oracle DB的任何驱动程序。是否有人知道是否要提供支持?

  • 有哪些好用的emoji表情库?