Heim  >  Artikel  >  Datenbank  >  让Mysql支持Emoji表情的方法简析_MySQL

让Mysql支持Emoji表情的方法简析_MySQL

WBOY
WBOYOriginal
2016-06-01 13:42:44941Durchsuche

bitsCN.com
声明:我的文章都是在实际工作中遇到并解决问题后撰写的,可能你早就一清二楚了,也可能对你没有任何帮助,喜欢就请顶一下,不喜也请勿喷。就像足球一样, 不喜欢中国足球的就请不要关注,你可以去看乒乓球、羽毛球,甚至,冰壶!但不要去骂他们,毕竟还有很多人痴心地喜欢国足,我就是其中之一。 ===正文=== 最近在做一个iPhone上的项目,我负责后端,Java开发,DB用的是Mysql,版本5.5.21,编码用的是UTF-8。    但发现了一个问题,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]    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 bitsCN.com

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn