讓mysql支援emoji表情

來源:互聯網
上載者:User

標籤:bsp   app   flow   mysql5.5   convert   表情   字元集設定   自己   用戶端   

一、問題及原因

APP產品想對Emoji進行支援,但發現mysql資料庫無法寫入表情。原因是我們的mysql資料庫預設用的是utf8編碼,utf8編碼儲存時用的是三個位元組,但Emoji表情是4個位元組,所以導致了資料插入異常。

原因找到了就很好辦,mysql5.5.3之後的版本支援utf8mb4編碼,這種編碼是utf8的升級版,用的是4個位元組進行儲存。所以需要做的就是把mysql字元集從utf8升級為utf8mb4就行了。

二、升級步驟1、備份資料庫

雖然utf8mb4相容utf8,但最好還是作個Database Backup。

2、升級mysql版本到5.5.3以上

這個就不說了,根據你的伺服器系統做mysql升級。

3、修改伺服器上mysql預設編碼,修改資料庫、表、列的字元集為utf8mb4

修改伺服器上mysql設定檔my.conf(如ubuntu為例,一般在/etc/mysql/my.conf):

[client] #xxx 已有配置default-character-set = utf8mb4[mysql]#xxx 已有配置default-character-set = utf8mb4[mysqld]#xxx 已有配置character-set-client-handshake = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_connect=‘SET NAMES utf8mb4‘

改完要重啟mysql

修改資料庫、表、列字元集:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

這裡看到沒有修改列的字元集,因為我試過後發現,改了表的字元集後,表中列的字元集自動修改為utf8mb4了。

改完可以查看一下:

這裡要確保紅框內變數值是utf8mb4。

 

可以看到列的字元集已經改過來了。

4、檢查列的最大長度及索引

這個就根據情況自己檢查調整了。

5、修改用戶端串連程式編碼

把代碼中串連資料庫時的字元集設定為utf8mb4即可

 

參考文章:

1、How to insert utf-8 mb4 character(emoji in ios5) in mysql?

2、1190000000616820

讓mysql支援emoji表情

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.