MYSQL数据库与Emoji表情的故事】的更多相关文章

问题背景 手机上众多输入法和键盘支持输入 emoji 表情,给早期设计的程序造成了越来越多的干扰. 移动端购物的流行,2018 年 "双十一"全网移动端交易达到 93.6% 微信年度报告里 80 后爱用的"龇牙"表情,早在 2017 年 QQ 发布的统计数据就超过 303 亿. 最近我们团队就遇到了一个线上问题,就是由于用户下单备注使用 emoji 表情引起的问题. 通过解决这个问题,主要了解下面 3 个方面内容: Mysql 编码概念 Mysql"乱码&…
emoji表情需要使用编码格式未utf8mb4,mysql数据库版本要5.5以上,我用的是5.6,因为只有5.5以上支持utf8mb4. 1.数据库编码设定为utf8mb4,如果建库时指定的是utf8,则需要执行语句:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 2.同时指定数据库配置参数中character_set_server改为utf8mb4 3.把对应的需要保存emoj…
异常:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 解决: MySql的utf-8编码只支持3个字节的数据,而移动端的emoji是四个字节的数据,如果直接往utf-8编码的数据库中插入表情,就会报上面的错误. utf8mb4编码兼容utf-8,是utf-8编码的超集,能存储4字节的表情字符. 1,将存储表情字符的数据库表改为utf8mb4, 2,utf8mb…
何为emoji表情?这里的全是. MySQL数据库为什么不能存储emoji?不是MySQL不能,而是MySQL的utf8编码不能!原来MySQL下的utf8编码每个字符占3个字节,而emoji占4个字节,所以存储不了. 解决方法: 1. 修改数据库编码(本人没有测试过,具体操作步骤自行百度) 2. 转义 转义的方法有好多种,我这里用的是json转换. /************ json存放 ******************/ $content = "这是一个微信文本消息…
问题:Emoji 表情是按照4个字节存储的,所以传统 mysql utf-8编码只能最大存储3字节. 解决:修改MySQL(5.5.3以上版本) 编码为utf8mb4 即可存储Emoji表,同时设置 set names utf8mb4 否则程序写入和读取时会发生乱码. 要求:MySQL 5.5.3以上(网上说的),本人未测试,我用的是 MySQL 5.6 亲测,可以存储. 修改MySQL 编码: 1. OS X 系统:http://www.cnblogs.com/chenshuo/p/47518…
关键点: 1. 修改mysql数据库表ALTER table <tablename>  modify <clolum>  char(100) character set utf8mb4 collate utf8mb4_unicode_ci 2.修改数据源链接中增加一行配置:connectionInitSqls: set names utf8mb4 最后贴出一个相关链接: https://segmentfault.com/a/1190000000616820…
今天学习爬虫爬伯乐在线的文章,由于在文章中有emoji表情,导致有emoji表情的文章都爬取不下来 经过一番搜索之后终于解决了问题. 原文可参考: 1. MySQL无法存储Emoji表情问题 2. mysql存emoji表情报错处理 1. 在navicat中 如果在新建表之前就改变数据库的编码,建表的时候好像可以自己转变过来吧 查看字符集编码:show variables like '%char%'; 更改数据库编码:ALTER DATABASE 数据库名 CHARACTER SET utf8m…
From: http://www.cnblogs.com/janehoo/archive/2016/04/06/5359800.html 一.教你如何让数据库支持emoji表情符存储 解决方式:更换字符集utf8-->utf8mb4 上周有开发人员反馈一个问题:前台应用抓取微博信息,每天总有几条数据插入不成功.应用日志显示: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column '…
从MySQL5.5.3开始,MySQL 支持一种utf8mb4的字符集,这个字符集能够支持4字节的UTF8编码的字符.utf8mb4字符集能够完美地兼容utf8字符串.在数据存储方面,当一个普通中文字符存入数据库时仍然占用3个字节,在存入一个Unified Emoji表情的时个它会自动占用4个字节.所以在输入输出时都不会存在乱码的问题了. 由于utf8mb4是utf8的超集,从utf8升级到utf8mb4不会有任何的问题,直接升级即可:如果从别的字符集如gb2312或者gbk转化而来,一定要先备…
普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 修改mysql的配置文件,windows下的为my…
由于需要实现emoji表情评论的功能,所以数据库需要支持emoji表情的存储,根据查询的资料最终实现了该功能,现将实现的过程以及过程遇到的一些问题记录下来,供大家参考和交流. mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情.但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储.下面介绍了关于如何修改mysql数据库的编码格式变为utf8mb4的具体方法. Linux系统中MySQL的配置文件…
这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表情或者某些特殊字符是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去. 我的解决方案是这样的 1.在mysql的安装目录下找到my.ini,作如下修改: [mysqld] character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 修改后重启Mysql 2. 将已经建好的表也转换成utf8mb4 命令: 更改数据库编码:ALTER D…
最近财神圈项目集成微信登录功能的过程中,当保存用户有昵称含有表情符号时后台服务抛出异常,原来是数据库默认字符集不支持emoji表情字符.找到问题的原因后,因为之前也没有遇到过这样的问题,也没思路,迅速百度大神找了一大堆资料来,原来仅只要将数据库及相关的表和表字段设置为utfmb84即支持emoji表情的. 问题的原因是数据库中使用的字符编码为UTF-8,这种编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而mysql的utf8编码最多3个字节,所以数据插不进去,而utfmb64是支持…
一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情. 手机上如何使用emoji: 1.iphone.ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,然后把emoji添加在里面即可在发短信和一些输入文本的文本框中输入表情. IOS 5用户可直接从通用中添加emoji 键盘,无需再安装em…
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个字节.   解决的方案有两种:   使用…
但发现了一个问题,iPhone上有Emoji表情,插入Mysql时失败了,报如下异常: 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(Mysq…
数据插入的时候报错: 1366 - Incorrect string value: '\xF0\x9F\x98\x81' for column 'job' at row 23 解决办法: 1.修改配置文件my.ini[D:\Program Files\MySQL\MySQL Server 5.5]: [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 2.重启mysql服务 3.修改表或者表中某个…
数据库处理 更换字符集utf8-->utf8mb4 JS处理 将表情转为字符: function utf16toEntities(str) { var patt=/[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则 str = str.replace(patt, function(char){ var H, L, code; if (char.length===2) { H = char.charCodeAt(0); // 取出高位 L = char…
https://www.cnblogs.com/jentary/p/6655471.html 修改数据库字符集: ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;   修改表的字符集: ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;   修改字段的字符集: ALT…
1.emoji 属于特殊字符 所以我们必须使用utf-8 的编码格式进行保存  不过好在sqlserver 默认支持utf-8 2.将需要存储emoji的字段必须设置为nvarchar 类型  因为varchar 是非 Unicode 的字符数据 不可以保存特殊字符  否则乱码 3.插入emoji 的数据时,值value 需要添加 N'xxx' 否则乱码 保存之后即可…
一.问题及原因 APP产品想对Emoji进行支持,但发现mysql数据库无法写入表情.原因是我们的mysql数据库默认用的是utf8编码,utf8编码存储时用的是三个字节,但Emoji表情是4个字节,所以导致了数据插入异常. 原因找到了就很好办,mysql5.5.3之后的版本支持utf8mb4编码,这种编码是utf8的升级版,用的是4个字节进行存储.所以需要做的就是把mysql字符集从utf8升级为utf8mb4就行了. 二.升级步骤 1.备份数据库 虽然utf8mb4兼容utf8,但最好还是作…
字符集UTF-8MB4 utf8mb4兼容utf8,且比utf8能表示更多的字符.看unicode编码区从1 - 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间. 官方地址:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html MySQL 要存储emoji表情,因此发现我们常用的utf8 字符集根本…
方案1:修改数据库编码 为什么我们设置表的的字符类型为utf8却不能存放emoji呢?原来utf8可能是2或3或4个字节,而mysql的utf8是3个字节,存放一个emoji是需要4个字节的,自然不够.Mysql数据库在5.5.3之后开始支持utf8mb4字符集,所以mysql版本是5.5.3+的都可以设置让数据库存储Emoji表情,如果你的应用有移动端的,最好一开始设计数据库的时候就使用utf8mb4字符集,当然没用的也可以通过如下方式修改: 编辑mysql配置文件vim /etc/my.cn…
一.教你如何让数据库支持emoji表情符存储 解决方式: 更换字符集utf8-->utf8mb4 问题描述: 前台应用抓取微博信息,每天总有几条数据插入不成功.应用日志显示: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1, 异常:org.springframework.jdbc.UncategorizedSQLException: 其…
问题:存到数据库的emoji表情,取出来后,在前端显示为乱码 环境:SpringBoot + Oracle(MySQL据说是支持表情的) 解决方案: 引入emoji相关的jar包,使用很方便,不过表情库不全,最近一次更新还是2017年 <!-- https://mvnrepository.com/artifact/com.vdurmont/emoji-java --> <dependency> <groupId>com.vdurmont</groupId>…
问题分析 普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题.涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点 Mysql 版本的限制,Mysql 5.5.3之前的版本,支持的utf8为3字节的,Mysql 5.5.3之后的版本支持utf8mb4 解决方案 修改mysql的配置文件,wi…
方法1:base_encode64 这种方法是可以,但是旧数据没有经过encode操作,取数据的时候如果统一进行decode的话,旧数据会丢失的. 1 方法2:urlencode 这个似乎可以,对没有经过encode的数据进行decode也不会有影响,而且多次decode似乎也不会有影响.你们说这个方法有缺陷吗? ======================= 一个发现,微信获取用户基本信息的时候,笑哭那个表情print_r出的是\ud83d\ude02,而我存储的时候,报错说这个 \xF0\x…
普通的UTF8编码是不支持emoji表情插入的,会报异常: Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xB0\xE5\x9C...' for column 'name' at row 1 将表字段的编码单独改成utf8mb4,即可支持emoji表情的插入. 修改的sql语句为 mysql) character set utf8mb4; 下面整理了常用的编码相关命令: 查看数据库默认字符集 mys…
在项目中遇到有人存emoji表情,出现如下错误: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 解决方法: 第一步: 修改mysql配置文件my.cnf(windows为my.ini,linux为my.cnf) my.cnf一般在etc/mysql/my.cnf位置.找到后请在以下三部分里添加如下内容: [client] default-character-…