針對MySQL數(shù)據(jù)庫業(yè)務(wù)生產(chǎn)環(huán)境中,經(jīng)常會有存儲表情包的場景,比如:用戶評論中的表情包數(shù)據(jù)。那么MySQL該如何存儲這些表情數(shù)據(jù)呢?
1、直接insert插入?
既然這篇文章能夠橫空出世,說明直接insert是行不通的,不出意外的話,你會看到以下報錯:ERROR 1366 (HY000): Incorrect string value: '\xF0\x9F\xA4\xA4' for column 'content' at row 1
2、MySQL字符集utf8mb4
涉及到文字、字符、表情等字符的存儲,肯定是離不開MySQL對字符編碼的支持。utf8mb4就是支持表情包的字符集,而MySQL在5.5.3版本時,就已經(jīng)實現(xiàn)了對utf8mb4字符集的支持。關(guān)于字符集的相關(guān)介紹,我這里就不再贅述了,詳情可以參考:MySQL字符集變量介紹。接下來我們直奔主題~
(1)修改MySQL配置文件
# 修改my.cnf配置文件 [mysqld] character_set_server = utf8mb4 collation_server = utf8mb4_general_ci init_connect = SET NAMES utf8mb4 # 用戶登錄到數(shù)據(jù)庫上之后,在執(zhí)行第一次查詢之前,執(zhí)行的內(nèi)容的 skip-character-set-client-handshake = 1 # 跳過mysql程序起動時的字符參數(shù)設(shè)置 ,使用服務(wù)器端字符集設(shè)置
(2)修改存量表字符集
# 在線修改表字符集 alter table tb_name convert to character set utf8mb4;
3、表情包存儲測試
(1)準(zhǔn)備測試數(shù)據(jù)
create database starcto; use starcto CREATE TABLE my_comments ( `bulletinId` bigint NOT NULL COMMENT '消息id', `content` varchar(256) NOT NULL COMMENT '內(nèi)容', PRIMARY KEY pk_my_comments(`bulletinId`) )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; # 插入帶有表情的測試數(shù)據(jù) insert into my_comments (bulletinid,content) values (0, '謝謝,太好看了!!????'); insert into my_comments (bulletinid,content) values (1, '謝謝,太好看了??!????');
(2)查看插入的表情包數(shù)據(jù)
4、生僻字存儲測試
(1)報錯復(fù)現(xiàn),準(zhǔn)備初始測試表
create database DB; CREATE TABLE student ( sno INT, sname VARCHAR(32), ssex VARCHAR(8) , primary key (sno) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 初始指定默認(rèn)字符集utf8 # 插入生僻字:???????? insert into student values (1001,'????????','男');
(2)異常解決
#(1)查看表結(jié)構(gòu),發(fā)現(xiàn)student表默認(rèn)是utf8字符集 mysql> show create table student\G; *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `sno` int(11) NOT NULL, `sname` varchar(32) DEFAULT NULL, `ssex` varchar(8) DEFAULT NULL, PRIMARY KEY (`sno`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) #(2)修改表字符集 mysql> alter table student convert to character set utf8mb4; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 #(3)再次插入測試
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128105.html
摘要:前言最近開發(fā)的項目因為需要用戶文本的存儲,自然就遇到了等表情符號如何被支持的問題。問題描述如果字符集且是服務(wù)器的話,當(dāng)存儲含有表情時,會拋出類似如下異常這就是字符集不支持的異常。升級步驟的最低版本支持版本為,若不是,請升級到較新版本。 ? 前言: 最近開發(fā)的iOS項目因為需要用戶文本的存儲,自然就遇到了emoji等表情符號如何被mysql DB支持的問題。困擾了數(shù)日,在就要絕望放棄...
摘要:教程所示圖片使用的是倉庫圖片,網(wǎng)速過慢的朋友請移步原文支持表情。因為評論里面有表情,所以需要數(shù)據(jù)庫支持編碼。摸索后發(fā)現(xiàn),需要更改的配置文件。在創(chuàng)建表格時候,設(shè)置字符集是,如下圖所示最后,各式各樣的表情就可以存儲在數(shù)據(jù)庫了 教程所示圖片使用的是 github 倉庫圖片,網(wǎng)速過慢的朋友請移步>>> (原文)Mysql 支持 emoji 表情。 更多討論或者錯誤提交,也請移步。 1. 前言 ...
閱讀 454·2024-11-07 18:25
閱讀 130760·2024-02-01 10:43
閱讀 942·2024-01-31 14:58
閱讀 904·2024-01-31 14:54
閱讀 82999·2024-01-29 17:11
閱讀 3262·2024-01-25 14:55
閱讀 2055·2023-06-02 13:36
閱讀 3164·2023-05-23 10:26