Emoji表情字符现在在APP已经广泛支持了。但是MySQL的UTF8编码对Emoji字符的支持却不是那么好。所以我们经常会遇到这样的异常: ? Java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8E' for column 'nick' at row 1 1 原因是Mysql里UTF8编码最多只能支持3个字节,而Emoji表情字符使用的UTF8编码,很多都是4个字节,有些甚至是6个字节。 ? 解决的方案有两种: ? 使用utf8mb4的mysql编码来容纳这些字符。 过滤掉这些特...
问题背景 手机上众多输入法和键盘支持输入 emoji 表情,给早期设计的程序造成了越来越多的干扰。移动端购物的流行,2018 年 “双十一”全网移动端交易达到 93.6% 微信年度报告里 80 后爱用的“龇牙”表情,早在 2017 年 QQ 发布的统计数据就超过 303 亿。最近我们团队就遇到了一个线上问题,就是由于用户下单备注使用 emoji 表情引起的问题。 通过解决这个问题,主要了解下面 3 个方面内容:Mysql 编码概念 Mysql“乱码”是怎么来的...
MySQL在5.5.3版本之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用utf8,然后将字符集修改为utf8mb4,也不会对已有的utf8编码读取产生任何问题。 #修改数据库: ALTER DATABASE mydatabse CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; #修改表编码为utf8mb4ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_un...
1.线上碰到个问题,端上切换搜狗输入法后,原来限制的表情符号还能输入。数据库使用的是5.7.22版本的,刚开始以为数据库不支持表情符号导致的,但是看了线上的数据库以及字段,都是支持的。 show variables like %character%; show full columns from driver_reward_record; 直接使用sql语句通过navicate 客户端,也是可以插入成功的。但是在程序里面 死活插入不进去,这就郁闷了。 看了下mysql的 mysql-connecto...
我的解决方案是这样的,将etc/my.cnf中的charset修改为utf8mb4格式 这其中会有点问题, client的如果写入character-set-server=utf8mb4会报出mysql: unknown variable character-set-server=utf8,将其修改为default-character-set=utf8mb4 而mysqld中如果设置为default-character-set=utf8mb4则会在重启时卡死,所以更换为character-set-server=utf8# For advice on how to change settings please see # http://dev.mysql.com/doc/re...
记录一下 全部替换为"***",修改引擎代价有些大function removeEmojiChar($str){$mbLen = mb_strlen($str);$strArr = array();for($i=0;$i<$mbLen;$i++){$mbSubstr = mb_substr($str, $i,1,utf-8);$clean_text = "";// Match Emoticons$regexEmoticons = /[\x{1F600}-\x{1F64F}]/u;$clean_text = preg_replace($regexEmoticons, ***, $mbSubstr);// Match Miscellaneous Symbols and Pictographs$regexSymbols = /[\x{1F300}-\x{1F5...
utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常: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:...
什么是emoji emoji就是表情符号 emoji的创造者是日本人栗田穰崇(Shigetaka Kurita) 在数据库的编码不为utf8mb4,利用java mysql驱动保存含有表情符号的数据会出现异常java.sql.SQLException: Incorrect string value: '\xF0\x9F\x94\xA5' for column mysql中存储emoji表情符号 以前做应用软件的时候 通常把mysql的字符编码设置为utf-8,但是这个编码却不支持emoji表情 是因为utf-8编码的一个字符最多只能存储3个字节,但一个emoj...
java.sql.SQLException: Incorrect string value: \xF0\x9F\x92\x94 for colum n 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...