emoji无法插入数据库问题
来源:互联网 发布:怎么检测网络是否正常 编辑:程序博客网 时间:2024/06/01 13:52
1.问题描述
在向数据库插入emoji表情时,会看到这样的错误
Incorrect string value: ‘\xF0\x9F\x98\x81’ for column ‘username’ at row 1
2.问题原因
我们平时在用数据库时一般默认的字符集格式设的是utf8格式,utf8在MySQL中是用3个字节表示的,但一般的emoji表情需要4个字节表示,这在插入时自然会发生错误。
3.解决办法
以MySQL数据库为例
1.windows下解决办法
I.先登录MySQL,查看当前的编码格式
输入指令
show variables like ‘char%’;
我们看到MySQL列出了当前的字符集:
character_set_client为客户端编码方式;
character_set_connection为建立连接使用的编码;
character_set_database为数据库的编码;
character_set_results为结果集的编码;
character_set_server为数据库服务器的编码;
只要把这5个编码方式改成utf8mb4,就不会出现乱码问题
输入指令
show variables like ‘collation_%’;
列出了排序规则,对于排序规则的作用可以移步MySQL字符集与排序规则
II.修改my.ini文件
my.ini文件默认是在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini目录下
打开my.ini文件,修改
[client]节点
default-character-set=utf8mb4(增加)
[mysql]节点
default-character-set=utf8mb4(修改)
[mysqld]节点
init-connect=’SET NAMES utf8mb4’(增加)
character_set_server=utf8mb4 (修改)
修改完毕后保存,如果保存是提示没有权限请看这篇Windows下获取文件权限
III.重启MySQL
先关闭服务,开始->运行->net stop mysql
然后再开启,开始->运行->net start mysql
也可以在任务管理器中操作
任务管理器->服务->MySQL->右击->重启服务
IV.查看修改结果
V.确认数据库、表、字段的字符集是否正确
VI.插入Emoji表情到数据库测试
2.linux下解决办法
I.修改my.cnf vi /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
II.修改后重启Mysql
III.登录MySQL
修改环境变量,将以下都修改成utf8mb4
1、set character_set_client = utf8mb4;
2、set character_set_connection = utf8mb4;
3、set character_set_database = utf8mb4;
4、set character_set_results = utf8mb4;
5、set character_set_server = utf8mb4;
IV.将表和字段转化为utf8mb4格式
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;(修改表字符集)
ALTER TABLE TABLE_NAMEMODIFY COLUMN COLUMN_NAME text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;(修改字段字符集)
V.插入emoji数据测试
- emoji无法插入数据库问题
- 解决emoji插入不到数据库的问题
- 数据库Emoji表情插入时候抛出异常
- MySQL无法存储Emoji表情问题
- MySQL无法存储Emoji表情问题
- Emoji 中关于MySQL 无法插入的问题解决
- 移动端的emoji表情符号插入MySQL数据库失败
- 移动端的emoji表情符号插入MySQL数据库失败
- struts+spring+hibernate无法插入数据库数据的问题
- 解决mysql数据库中无法插入中文数据的问题
- 【转载】struts+spring+hibernate无法插入数据库数据的问题
- Thinkphp新增字段无法插入到数据库问题
- 解决mysql数据库无法插入中文的问题
- MySQL解决插入emoji表情失败的问题
- eclipse3.2下解决数据插入mysql数据库时乱码无法插入问题(Hibernate)
- 解决MySQL数据库无法插入中文或插入中文乱码问题
- mysql数据库无法插入中文
- MySql数据库无法插入中文?
- 使用vitaimo搭建可以播放组播流的播放器
- 设计模式C++实现(5)——原型模式、模板方法模式
- Druid的简介及功能
- NS3 使用可视化工具PyViz
- 二叉树中和为某一值的路径(Java实现)
- emoji无法插入数据库问题
- 草料二维码以及一个大神整理的前端工程师技术
- Android Fragment 真正的完全解析(上)
- 集群/分布式环境下5种session处理策略
- Shader中的结构体
- 算法训练 新生舞会
- 设计模式C++实现(6)——建造者模式
- Android listview 长按点击事件。(两种方法)
- ViewDragHelper使用详解