首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql存储emoji表情报错

PHP + MySQL , APP提交的数据包含表情,数据库存储失败!!!...mysql默认的所占字节数是3个字节的,对于大部分语言来说比如说汉字什么来说是足够的,但是emoji表情有日本文字转化而来,其占了4个字节,所以在存储过程中,会导致无法写入数据库mysql就会出现错误。...对于mysql5.5以上版本呢,其实支持更大字节的存储,需修改一下数据库的编码方式为utf8mb4 utf8mb4 是utf8的扩展,utf8mb4兼容utf8字符集,utf8 字符的编码、位置、存储在...修改以下两处 [mysqld]character-set-server=utf8mb4 [mysql] default-character-set=utf8mb4 重启mysql数据库服务。...TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名) ok,客户端不需要任何修改,再次提交数据表情一切正常

1K30
您找到你想要的搜索结果了吗?
是的
没有找到

SpringBoot+Mysql 无法保存emoj表情

尤记得很久以前,想存 emoj 表情mysql 中,需要额外的将 emoj 表情转码之后保存,每次读取时,再解码还原成一下;每次这种 sb 的操作,真心感觉心塞,那么有没有办法直接存呢?...mysql 本身可以通过选择编码集(如 utfbmb4)来支持 emoj 表情,然而今天遇到了一个相当鬼畜的问题,表中可以直接写入 emoj 表情,但是通过 spring boot 代码塞入的 emoj...Emoj 表情支持之旅 接下来我们的目标是可以直接向 mysql 中读取或写入 emoj 表情 1....小结 在 mysql 中存入 emoj 表情的场景可以说比较多了,毕竟 21 世纪了,不支持 emoj 的应用是没有前途的;通过前面的 case,即介绍了如何正确的让 springboot 应用支持 emoj...表情,也给出了一个由于版本问题导致的坑 emoj 支持步骤 首先是源头支持,需要修改 mysql 的表字符集;或者修改某些列的字符集,设置为 utf8mb4 注意引入的mysql-connector-java

2.1K20

在Django中使MySQL支持存储Emoji表情????

当我们在Django应用程序中使用MySQL数据库时,可能会遇到无法存储包含Emoji表情的数据的问题。...这是因为MySQL默认字符集和校对规则只支持存储基本的Unicode字符集,无法支持Emoji表情字符。在这篇博客中,我将为您介绍如何在Django中使MySQL支持存储Emoji表情。...问题描述 默认情况下,Django使用的MySQL数据库的字符集和校对规则只支持存储基本的Unicode字符集,无法支持Emoji表情字符。...因此,当我们尝试将包含Emoji表情的数据存储MySQL数据库时,Django会报错并拒绝存储。...MySQL不支持Emoji表情的原因 MySQL默认字符集和校对规则只支持存储基本的Unicode字符集,无法支持Emoji表情字符。

82130

MySQL插入Emoji表情

前言 今天在设计开源项目的反馈信息表时遇到了emoji表情插入失败的问题,网上找了很多解决方案,答案五花八门,没找到好使的。...经过一番折腾后,终于成功插入了emoji表情,本文就跟大家分享下我的实现过程,欢迎各位感兴趣的开发者阅读本文。...实现思路 因为数据库默认是UTF-8编码格式,普通的字符串占位3个字节而表情占位4字节,此时UTF-8就不够用了,需要采用utf8mb4字符集就能解决这个问题了。...那么,我们要做的事情如下所示: 修改mysql配置文件,设置其编码格式 修改数据库字符集编码 修改数据库表字符集编码 实现过程 mysql默认读取配置的顺序为:/etc/my.cnf、/etc/mysql...,应该是软件无法识别。 ? 讲道理,应该是插入成功了,我们用postman请求接口试下,成功显示出来了?。 ?

4K10

MySQL插入Emoji表情

前言 今天在设计开源项目的反馈信息表时遇到了emoji表情插入失败的问题,网上找了很多解决方案,答案五花八门,没找到好使的。...经过一番折腾后,终于成功插入了emoji表情,本文就跟大家分享下我的实现过程,欢迎各位感兴趣的开发者阅读本文。...string value: '\xF0\x9F\x98\x82' for column 'comments' at row 1 实现思路 因为数据库默认是UTF-8编码格式,普通的字符串占位3个字节而表情占位...那么,我们要做的事情如下所示: 修改mysql配置文件,设置其编码格式 修改数据库字符集编码 修改数据库表字符集编码 实现过程 mysql默认读取配置的顺序为:/etc/my.cnf、/etc/mysql...,应该是软件无法识别。 image-20201201214741613 讲道理,应该是插入成功了,我们用postman请求接口试下,成功显示出来了。 image-20201201215255287

2.1K40

Emoji 表情图标在 iOS 与 PHP 之间通信及 MySQL 存储

在测试过程中我们发现,用户在 iOS 端里输入了 Emoji 表情提交到服务器以后,PHP 无法MySQL 数据库里正确保存,会遇到乱码的问题。下面是原因探析和解决办法。...回到 iOS 和 Web 服务器之间的通信方案,我们可以直接把 iOS 中用户输入的 Emoji 表情,通过 PHP 存入 MySQL 数据库中,如果在 iOS 中展示,直接把数据传递给 iOS,客户端应该就能正确展示表情图标了...但是,Web 开发者在开发网页端的时候就会遇到一些问题,以往直接把 Emoji 表情存储在数据库中现在则会导致乱码。...,存储在数据库中就不会有任何问题了。...在数据存储方面,当一个普通中文字符存入数据库时仍然占用 3 个字节,在存入一个 Unified Emoji 表情的时候,它会自动占用 4 个字节。所以在输入输出时都不会存在乱码的问题了。

1.3K20

天天都在用的 Emoji 表情包,居然是怎么存储MySQL

现象 最近项目中存储emoji表情包的时候报错: ### Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x81...三个字节的utf8最大能编码的Unicode字符是0xffff,任何不在基本多文本平面的Unicode字符,都无法使用MySQL的utf8字符集存储,包括emoji表情和很多不常见的汉字,以及任何新增的...由以上可以看出,我们想存储emoji表情包,那么数据库的编码方式需要是utf8mb4的,接下来我们来看看数据库和数据库链接的配置: 查看数据库编码,可以看到数据库编码已经是utf8mb4 show variables...mysql-connector-java版本号修改为5.1.47及以上或者8.0.13及以上的方式,修改版本号后不用再修改mysql服务配置文件即可存储emoji表情包。...有时候,我们的mysql-connector-java版本太低(可能历史项目中mysql或者java版本太低)或者不能更改mysql服务端配置文件,我们还可以采用第二种方案来存储emoji表情包:前端或者后端对用户数据进行编码解码处理

1.4K30

java存储emoji表情解决方案

1、问题产生情况 在开发IM时有些有用的头像用了emoji表情或者聊天的时候用了emoji表情,然而mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了...java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1 2、为什么会出现这种原因 因为mysql...的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。...但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情存储。 3、解决方案 方案一:修改数据库的编码集设置为utf8mb4,无论是数据库还是表,还是字段。...虽然会增加存储,但是这个可以忽略不计。

1.2K20

Java 存储mysql数据库时如何进行Emoji表情转换和处理

当保存字符串到数据库里出现\xF0\x9F\x92\x94类似问题时,发现竟是因为输入了Emoji表情的原因,由于我的mysql数据库是utf8字符集,而且Emoji表情等特殊符号要占四个字节,所以导致数据库不能正常存入...最后还是发现github上有个很牛逼的轻量级开源工具叫emoji-java,通过这个工具类基本上解决了我大部分的问题,同时配合前端限制Emoji表情输入,才算把问题解决。...下面附上完整的java解决Emoji表情工具类: package com.im.app.api.util; import com.github.binarywang.java.emoji.EmojiConverter...private static EmojiConverter emojiConverter = EmojiConverter.getInstance(); /** * 判断字符串中是否含有表情..."" : source.trim(); String noEmojiStr = EmojiParser.removeAllEmojis(source);//移除所有的表情之后的字符串8

1.8K10

MySQL存储过程_MySQL创建存储过程

什么是存储过程 存储过程就是事先经过编译并存储在数据库中的一段 SQL 语句的集合; 为什么使用存储过程 调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的...([ 参数 ]); 调用上面的存储过程 call p1(); 3、查看存储过程 SHOW CREATE PROCEDURE 存储过程名称 ; -- 查询某个存储过程的定义 4、删除存储过程 DROP...delimiter 指定SQL语句的结束符 存储过程中的变量 在MySQL中,变量一般可分为分为三种类型: 系统变量、用户定义变量、局部变量; 一、系统变量 系统变量是MySQL服务器系统自身提供的...注意点: mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在 /etc/my.cnf 中配置; 全局变量(GLOBAL): 全局变量针对于所有的会话; 会话变量(SESSION):...循环语句在编程中经常被用到,常用于对批量的数据进行循环处理,在mysql存储过程中,也提供了几种常用的循环语句,包括:while循环,repeat循环,和loop循环; 1、while循环语句 while

22.2K21

MySQLMySQL 存储过程

MySQL 存储过程(了解) 1 什么是存储过程 MySQL 5.0 版本开始支持存储过程 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据 库对象。...存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过 指定存储过程的名字并给定参数(需要时)来调用执行。 简单理解: 存储过程其实就是一堆 SQL 语句的合并。...中间加入了一些逻辑控制 2 存储过程的优缺点 优点:   存储过程一旦调试完成后,就可以稳定运行,(前提是,业务需求要相对稳定,没有变化)   存储过程减少业务系统与数据库的交互,降低耦合...,数据库交互更加快捷(应用服务器,与 数据库服务器不在同一个地区) 缺点:    在互联网行业中,大量使用MySQLMySQL存储过程与Oracle的相比较弱,所以较少使用,并且互联网行业需求变化较快也是原因之一...goods; END $$ 3) 调用存储过程 语法格式 call 存储过程名 -- 调用存储过程 查询goods表所有数据 call goods_proc; 方式2 1) IN 输入参数:表示调用者向存储过程传入值

16K10
领券