mysql怎么存emoj mysql怎么保存数据库文件

input保存emoji发送java

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

创新互联建站是一家集网站建设,郏县企业网站建设,郏县品牌网站建设,网站定制,郏县网站建设报价,网络营销,网络优化,郏县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

打开APP

制造bug的键盘钢琴师

关注

Java中解决app传的emoji表情的多种方式 原创

2019-01-26 17:58:13

2点赞

制造bug的键盘钢琴师

码龄5年

关注

今天项目遇到的一个问题,APP订单评论提交emoji表情的话会报错,由于需要实现emoji表情评论的功能,根据自己实现的方式以及查询的实现方式,现总结为一下几种

mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。

实现方式一

对APP传入后端的数据包括字符串和emoji表情,把emoji表情和String都进行Base64转换,存储在数据库中,取的时候再转换回来即可解决上述问题,这是最快也是最简单的解决方法。

1、最适合应用场景:

h5或者android开发中通常会遇到一种场景,当用手机输入法输入Emoji表情符的时候,由于数据库不支持,保存时这些表情符号就会被过滤掉以至于无法显示,android和h5开发中可以使用Base64算法解决这个问题。

2、使用工具:

使用Apache commons codec 类Base64

3、引入jar包:

加入jar包依赖(如果是maven项目就直接在pom文件中加入下边内容,若不是就加入对应jar包)

dependency

groupIdcommons-codec/groupId

artifactIdcommons-codec/artifactId

version1.6/version

/dependency

4、加密解密实现:

import org.apache点抗 mons.codec.binary.Base64;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import java.io.UnsupportedEncodingException;

/**

* 将String类型的字符串进行base64编码与解码,使用utf-8

*/

public

class Base64Util {

private

static

final Logger logger = LoggerFactory.getLogger(Base64Util.class);

/**

* 对给定的字符串进行base64加密

*/

public static String encodeData(String inputData) {

try {

if (

null == inputData) {

return

null;

}

return

new String(Base64.encodeBase64(inputData.getBytes(

"utf-8")),

"utf-8");

}

catch (UnsupportedEncodingException e) {

logger.error(inputData, e);

}

return

null;

}

/**

* 对给定的字符串进行base64解密

*/

public static String decodeData(String inputData) {

try {

if (

null == inputData) {

return

null;

}

return

new String(Base64.decodeBase64(inputData.getBytes(

"utf-8")),

"utf-8");

}

catch (UnsupportedEncodingException e) {

logger.error(inputData, e);

}

return

null;

}

}

1

1

实现方式二

mysql 字符集utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。只要修改mysql数据库的编码格式变为utf8mb4即可

具体方法可参考连接

这种方式后台不用再做额外的操作,直接正常存储即可,但是修改数据库会比较麻烦

实现方式三

通过emoji-Java解决数据库不能存储4字节表情符号

怎么将emoji表情存入mysql

mysql

5.5.3

开始,mysql

支持一种

utf8mb4

的字符集,这个字符集能够支持

4

字节的

utf8

编码的字符。

utf8mb4

字符集能够完美地向下兼容

utf8

字符串。在数据存储方面,当一个普通中文字符存入数据库时仍然占用

3

个字节,在存入一个

unified

emoji

表情的时候,它会自动占用

4

个字节。所以在输入输出时都不会存在乱码的问题了。由于

utf8mb4

utf8

的超集,从

utf8

升级到

utf8mb4

不会有任何问题,直接升级即可;如果从别的字符集如

gb2312

或者

gbk

转化而来,一定要先备份数据库。然后,修改

mysql

的配置文件

/etc/my点吸烟 f,修改连接默认字符集为

utf8mb4

,然后在连接数据库以后首先执行一句

sql:

set

names

utf8mb4;。

1.

修改my点吸烟 f

my.ini

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

修改后重启mysql

登陆mysql,

show

variables

like

'character%';

可以查看编码是否已经修改成功。

2、修改数据库和数据表为相应的

utf8mb4

格式。

alter

table

table_name

convert

to

character

set

utf8mb4

collate

utf8mb4_bin;

3、在代码中,连接数据库成功后,执行

"set

names

utf8mb4"

Postgres 存储表情 编码问题

mysql存储emoji可以把编码设置为utf8mb4,但是postgresql设置为utf8mb4编码格式即可,默认支持。

mysql 如何存储 emoji

之前我也遇到这样的问题,具体原因是因为emoji表情大小为四个字节,但一般的utf8编码下的mysql只能存储2到3个字节,具体的解决办法是把要存储的emoji表情的那个字段类型改为longtext,要是不行把utf8编码改为utf8mb4

我当时好像就是这么解决的,你试试


当前文章:mysql怎么存emoj mysql怎么保存数据库文件
网站路径:http://ybzwz.com/article/ddeppie.html