国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MySQL 存儲表情字符

2019-11-11 06:26:48
字體:
來源:轉載
供稿:網友

摘要

MySQL 中直接存儲表情的時候,會出現無法插入數據的錯誤。

這是由于一般情況下,MySQL 的字符集是 utf8,而對于 emoji 表情的 mysql 的 utf8 字符集是不支持,需要修改設置為 utf8mb4 才行。

mysql utf8mb4與emoji表情 MYSQL 5.5 之前, UTF8 編碼只支持1-3個字節,只支持BMP這部分的unicode編碼區(BMP是從哪到哪),基本就是0000~FFFF這一區。 從MYSQL5.5開始,可支持4個字節UTF編碼utf8mb4,一個字符最多能有4字節,所以能支持更多的字符集。 utf8mb4 is a superset of utf8,utf8mb4兼容utf8,且比utf8能表示更多的字符。在做移動應用時,會遇到用戶會輸入emoji表情,如果不做一定處理,就會導致插入數據庫異常。

修改服務器端修改數據庫配置文件/etc/my.cnf,添加下面的配置,然后重啟服務器:

[mysqld]character-set-server=utf8mb4collation_server=utf8mb4_unicode_ciinit-connect="SET NAMES utf8mb4" [mysql]default-character-set=utf8mb4

重啟之后,登錄 mysql,可以通過show variables like 'character%';查看編碼是否已經修改成功。修改成功應該類似如下:

mysql> show variables like '%char%';+--------------------------+----------------------------------+| 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                             || character_sets_dir       | /usr/local/mysql/share/charsets/ |+--------------------------+----------------------------------+8 rows in set (0.00 sec)然后再修改相應的數據庫表的編碼為 utf8mb4:ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

轉換數據表編碼的語句格式如下: ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;

客戶端使用不同的編程語言的時候,可能會對 utf8mb4 不支持,不能在連接字符串中指定的,此時可以在獲取連接之后,執行set names utf8mb4來解決這個問題。比如,對于 Thinkphp 框架,在配置文件中設置數據庫連接字符集為 utf8mb4 之后('DB_CHARSET'=>'utf8mb4'),會出現錯誤,提示無法使用這個字符集。此時,由于我們已經在 mysql 的配置文件中設置了init-connect="SET NAMES utf8mb4",所以直接將 ThinkPHP 配置文件中的數據庫字符集設置為空('DB_CHARSET'=>''),則連接數據庫之后,服務器會自動設置連接字符集為 utf8mb4,此時寫入和讀取 emoji 表情就能正常了。擴展MySQL 默認情況下,無法存儲中文字符,其實這和 MySQL 默認無法存儲表情字符是同樣的原因:數據庫字符編碼問題。默認情況下,MySQL 使用的字符集是 Latin,所以無法存儲中文或者其他的一些字符。

如果要存儲中文,可以設置 MySQL 的字符集為支持中文的字符集,比如 GBK 或者 UTF-8。一般情況下,我們設置為 UTF-8,能有更好的兼容性。1.修改 MySQL 配置文件/etc/my.cnf,添加下面的配置,然后重啟服務器:

[mysqld]character-set-server=utf8 [mysql]default-character-set=utf82.重啟 mysqld 服務,使剛才的修改生效3.如果數據庫中已經建有數據表了,那么還需要將這些數據表的字符集做更改。如果數據表有很多,可以導出數據庫和數據,然后重新建庫。

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德江县| 肥西县| 阜新市| 白山市| 兴化市| 湘西| 南木林县| 化德县| 天全县| 新宁县| 永寿县| 新巴尔虎左旗| 德安县| 佛教| 绥芬河市| 宁夏| 铜山县| 介休市| 庐江县| 连山| 阳东县| 茶陵县| 屏山县| 宿松县| 河北区| 香格里拉县| 凉城县| 樟树市| 双柏县| 衡东县| 榆中县| 安溪县| 乌鲁木齐市| 陈巴尔虎旗| 邯郸市| 嘉义县| 松潘县| 阿鲁科尔沁旗| 中宁县| 南川市| 克山县|