帶有UTF8的mySQL轉儲無法導出正確的表情符號字符串 [英] mysqldump with utf8 can not export the right emojis string

查看:0
本文介紹了帶有UTF8的mySQL轉儲無法導出正確的表情符號字符串的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我使用的是MySQL5.5.29,utf8mb4字符集,有一個表USER包含一個值為十六進制F09F988EF09F988E的字段nickname,該字段可轉換為表情符號????。

現在打開MySQL控制臺,執行:


set names utf8mb4;
select nickname, hex(nickname) from user;

nickname | hex(nickname)
---------+-----------------
????    | F09F988EF09F988E

然后執行:

mysqldump --default-character-set=utf8 -utest -ptest test_dev user > user.sql

檢查user.sql,找到十六進制字符串為3f的昵稱Display??

那么,如何使用UTF8導出正確的表情包字符串?


順便說一句,數據庫字符集環境配置如下: 顯示類似‘CHARACTER_SET_%’的變量:

'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', '/data/mysql/share/charsets/'

推薦答案

謝謝Danack!
通過指定utf8mb4字符集并將mysqlump版本升級到5.5.3+,mysqlump&;MySQL可以很好地支持4個字節的emoji。

[tomcat@localhost ~]$ mysqldump --default-character-set=utf8mb4 -utest -ptest test_dev user > user.sql

如果顯示如下錯誤:

mysqldump: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

檢查您的mysqldump版本(mysqldump --version)

[tomcat@localhost ~]$ mysqldump --version
mysqldump  Ver 10.11 Distrib 5.0.95, for redhat-linux-gnu (x86_64)

將mysqlump升級到5.5.33后可以使用。

[tomcat@localhost ~]$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.5.33, for Linux (x86_64)

這篇關于帶有UTF8的mySQL轉儲無法導出正確的表情符號字符串的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!

查看全文
登錄 關閉
掃碼關注1秒登錄
發送“驗證碼”獲取 | 15天全站免登陸
全免费A级毛片免费看无码播放