MySQL utf8mb4与emoji表情

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

客户端工具 Navicat Premium_11.2.7简体中文完美破解版(32位和64位) 支持mb4

修改MySQL配置文件

修改mysql配置文件my.cnfwindowsmy.ini) 

my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容: 

[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

重启数据库,检查变量

SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE collation%;

String query = “set names utf8mb4;

stat.execute(query);

mysql> INSERT INTO messages (message) VALUES ('What a nice emoji!');wKiom1ffgCGwPftIAAANfIi6X5o319.png

http://www.oicqzone.com/tool/emoji/

QQ地带Emoji表情代码大全

下载这个插件Chromoji 


实际批量操作 

db改字符集

#!/bin/bash

if [ -f /root/.bash_profile ];then

source /root/.bash_profile

fi 

MysqlUser=root

PassWord='xx'

Port=3306

Socket="/opt/$Port/mysql.sock"

MysqlCmd="mysql -u$MysqlUser -p$PassWord -S $Socket"

Database=`$MysqlCmd -e "show databases;"|egrep -v "Database|_schema|mysql"`

for dbname in $Database

  do

      $MysqlCmd -e 'ALTER DATABASE '$dbname' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci';

done


table改字符集

#!/bin/bash

if [ -f /root/.bash_profile ];then

source /root/.bash_profile

fi 

MysqlUser=root

PassWord='xx'

Port=3306

Socket="/opt/$Port/mysql.sock"

MysqlCmd="mysql -u$MysqlUser -p$PassWord -S $Socket"

for database in `$MysqlCmd -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema|sys"`

do 

    for table in `$MysqlCmd -e "show tables from $database;"|sed '1d'`

    do

    $MysqlCmd $database -e 'ALTER TABLE '$table' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'

    done

done


或则

参考https://my.oschina.net/xuqiang/blog/507629  批量修改mysql表、表、数据库的字符校对规则

查询是否修改

SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET UTF8 COLLATE utf8_unicode_ci', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')FROM information_schema.COLUMNSWHERE TABLE_SCHEMA = 'database'AND DATA_TYPE = 'varchar'AND(

    CHARACTER_SET_NAME != 'utf8'

    OR

    COLLATION_NAME != 'utf8_unicode_ci');


新增

mysql 默认是autocommit=1 的, 

我们线上都设置一般是init_connect='set autocommit=0; set names gbk;' 这样的


init_connect='SET NAMES utf8mb4'

skip-character-set-client-handshake = true 



本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1854028,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 MySQL
Mysql中utf8和utf8mb4区别
Mysql中utf8和utf8mb4区别
173 0
|
存储 自然语言处理 搜索推荐
mysql中utf8、utf8mb4和utf8mb4_unicode_ci、utf8mb4_general_ci
mysql中utf8、utf8mb4和utf8mb4_unicode_ci、utf8mb4_general_ci
498 0
|
存储 自然语言处理 关系型数据库
👨‍💻如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
👨‍💻如何使用MySQL存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别?
386 1
|
存储 小程序 关系型数据库
[记录]springboot+mysql存储emoji问题
[记录]springboot+mysql存储emoji问题
109 0
|
关系型数据库 MySQL Linux
mysql 8中utf8和utf8mb4运行时的编码警告提醒[Warning]——my.ini配置问题
mysql 8中utf8和utf8mb4运行时的编码警告提醒[Warning]——my.ini配置问题
|
存储 关系型数据库 MySQL
Mysql中utf8和utf8mb4区别
Mysql中utf8和utf8mb4区别
261 0
|
XML 关系型数据库 MySQL
Mysql插入emoji表情字符编码错误 Incorrect string value: ‘\xF0\x9F\x98\x84\xF0\x9F...‘ for column ‘comment‘ at r
今天在插入数据时发现emoji表情时数据库报错了,以前从来不会报错的,因为我设计表时从来都是如下设置:
331 0
|
存储 SQL 监控
MySQL面试精选:emoji表情存储不进去?
MySQL面试精选:emoji表情存储不进去?
|
SQL 存储 数据可视化
【解决方案 二】---设置mysql5.7编码集为utf8mb4
【解决方案 二】---设置mysql5.7编码集为utf8mb4
969 0
|
关系型数据库 MySQL
MySQL 8 默认字符集改成utf8mb4
MySQL 8 默认字符集改成utf8mb4
224 0

推荐镜像

更多