程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 讓Mysql支持Emoji表情的方法簡析

讓Mysql支持Emoji表情的方法簡析

編輯:MySQL綜合教程


聲明:我的文章都是在實際工作中遇到並解決問題後撰寫的,可能你早就一清二楚了,也可能對你沒有任何幫助,喜歡就請頂一下,不喜也請勿噴。就像足球一樣, 不喜歡中國足球的就請不要關注,你可以去看乒乓球、羽毛球,甚至,冰壺!但不要去罵他們,畢竟還有很多人癡心地喜歡國足,我就是其中之一。   ===正文===   最近在做一個iPhone上的項目,我負責後端,Java開發,DB用的是Mysql,版本5.5.21,編碼用的是UTF-8。  www.2cto.com   但發現了一個問題,iPhone上有Emoji表情,插入Mysql時失敗了,報如下異常:
  Java代碼   java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1       at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)       at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)       at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)       at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)       at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)       at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)       at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)       at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)      上百度Google一下,終於找到了答案。UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,所以數據插不進去。解決方案就是:將Mysql的編碼從utf8轉換成utf8mb4。網上應該能搜到一大堆修改Mysql編碼的方法。   我是這麼做的,可能有些修改沒有必要,但最終我還是解決了問題:
  1. 修改my.cnf [mysqld] character-set-server=utf8mb4 [mysql]  www.2cto.com   default-character-set=utf8mb4 修改後重啟Mysql   2. 以root身份登錄Mysql,修改環境變量,將character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server 都修改成utf8mb4   3. 將已經建好的表也轉換成utf8mb4 命令:alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (將TABLE_NAME替換成你的表名)   至此,OK了!       作者 RamosLi

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved