字符集UTF-8MB4 MySQL utf8mb4 字符集,用于存储emoji表情
字符集UTF-8MB4
utf8mb4兼容utf8,且比utf8能表示更多的字符。
看unicode编码区
从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。
官方地址:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
MySQL 要存储emoji表情,因此发现我们常用的utf8 字符集根本无法存储表情。
首先将我们数据库默认字符集由utf8 更改为utf8mb4,对应的表默认字符集也更改为utf8mb4 已经存储表情的字段默认字符集也做了相应的调整。
SQL 语句
# 修改数据库:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 修改表:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 修改表字段:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改MySQL配置文件
新增如下参数:
[client]
default-character-set = utf8mb4 [mysql]
default-character-set = utf8mb4 [mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
检查环境变量 和测试 SQL 如下:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name | Value |
+--------------------------+--------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
+--------------------------+--------------------+
rows in set (0.00 sec)
MySQL版本必须为5.5.3以上版本,否则不支持字符集utf8mb4
测试,如下修改亦可

项目中的配置文件如下修改
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://***.***.***.***:3306/fsmp?useSSL=false
jdbc.username=***
jdbc.password=***
数据库连接池配置

参考文献:
http://blog.arkency.com/2015/05/how-to-store-emoji-in-a-rails-app-with-a-mysql-database/
字符集UTF-8MB4 MySQL utf8mb4 字符集,用于存储emoji表情的更多相关文章
- JDBC对Mysql utf8mb4字符集的处理
写在前面 在开发微信小程序的时候,评论服务模块希望添加上emoji表情,但是emoji表情是4个字节长度的,所以需要进行设置 当前项目是JAVA编写, 使用JDBC连接操作数据库, 如下针对的JDBC ...
- nodejs项目mysql使用sequelize支持存储emoji
nodejs项目mysql使用sequelize支持存储emoji 本篇主要记录nodejs项目阿里云mysql如何支持存储emoji表情. 因由 最近项目遇到用户在文本输入emoji进行存储的时候导 ...
- MySQL无法存储emoji表情方案
今天学习爬虫爬伯乐在线的文章,由于在文章中有emoji表情,导致有emoji表情的文章都爬取不下来 经过一番搜索之后终于解决了问题. 原文可参考: 1. MySQL无法存储Emoji表情问题 2. m ...
- 一个emoji引发的一条血案:mysql存储emoji表情字符时报错解决
以下是我插入一条带表情的数据到mysql后出现错误 2019-03-04 14:24:40,462 ERROR 2807 [-/139.199.27.244/-/2ms POST /api/activ ...
- mysql存储emoji表情报错处理,qq互联mysql存储昵称中带表情的数据时报错。
前言 做qq互联登录时发现一个问题,如果qq昵称中有表情时存入mysql数据库会报错. java.sql.SQLException: Incorrect string value: "ð&q ...
- Sequelize+MySQL存储emoji表情
一.原因 mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情.但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持em ...
- MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)
今天在存储emoji表情的时候,发现无法存储,mysql版本太低也没办法使用uft8mb4格式编码,只能将数据字段设置为blob BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型 ...
- Mysql数据库存储emoji表情
emoji表情需要使用编码格式未utf8mb4,mysql数据库版本要5.5以上,我用的是5.6,因为只有5.5以上支持utf8mb4. 1.数据库编码设定为utf8mb4,如果建库时指定的是utf8 ...
- Mysql UTF-8mb4字符集的问题
官方Mysql手册链接 https://dev.mysql.com/doc/connectors/en/connector-j-reference-charsets.html Notes For Co ...
随机推荐
- wince天气代码
#ifndef COMMON_H #define COMMON_H #include <Windows.h> typedef struct _operateInfo { HANDLE hS ...
- C#入门经典(3-窗体应用程序-第二章要点)
新建一个窗体用用程序,拖一个按钮,加事件和Text属性.打开Form1Designer.cs.
- C#入门经典(2-重置窗体布局,界面介绍,错误列表)
- NSTimer相关方法
- (void)fire; //立即触发定时器 - (NSDate *)fireDate;//开始时间 - (void)setFireDate:(NSDate *)date;//设置fireData, ...
- 安装tomcat过程中出现问题小结
报错信息如下:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these ...
- Matplotlib中文显示的问题
原文地址:http://blog.csdn.net/rumswell/article/details/6544377 #Matplotlib中文显示有问题,当然可以修改配置文件matplotlibrc ...
- Delph组件如何使用自己的图标(转)
源:http://blog.csdn.net/henreash/article/details/7298451
- Spring ---annotation (重点)--Resource, Component 重要!!!
beans.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="ht ...
- iOS多页面传值方式之单例传值singleton
// 要实现单例传值,那就必须得新建一个类做为单例 提供创建该类对象的类方法(因为是要在alloc开辟内存空间后赋值).所有在.h文件中声明该方法 + (instancetype)defaultUII ...
- openstack名称发音收集
MariaDB: maria['mɛərɪr] Corosync: coro[kə'roʊ] sync[sɪŋk] pacemaker: [ˈpesˌmekɚ] galera: ...