精华内容
下载资源
问答
  • 数据库存储emoji表情,应该用什么编码格式,为什么? 1、解决方式: 存储emoji表情mysql数据库需要使用utf8mb4格式,不能使用utf8格式 2、解释: mysql默认编码utf8格式,只能存储3个字节的数据,而emoji表情是4个...

    数据库存储emoji表情,应该用什么编码格式,为什么?

    1、解决方式:
    存储emoji表情mysql数据库需要使用utf8mb4格式,不能使用utf8格式

    2、解释:
    mysql默认编码utf8格式,只能存储3个字节的数据,而emoji表情是4个字节的数据,所以无法存储。
    utf8mb4是utf8的超集,一个字符最多可以有4个字节,所以使用utf8mb4可以存储

    展开全文
  • 关于数据库存储emoji等高级符号的字符集升级的解决方案 一:背景 mysql5.7,原字符集为utf8,想升级为utf8mb4存储emoji等高级符号 二:数据库ddl案例 第一句:ALTER TABLE dbname MODIFY c1 varchar(255) CHARACTER ...

    关于数据库存储emoji等高级符号的字符集升级的解决方案

    一:背景

    mysql5.7,原字符集为utf8,想升级为utf8mb4存储emoji等高级符号

    二:数据库ddl案例

    第一句:ALTER TABLE tbname MODIFY c1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null default ‘’ comment ‘c1的注释’;
    第二句:ALTER TABLE tbname MODIFY c1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null default ‘’;
    第三句:【ALTER TABLE tbname MODIFY COLUMN c1 varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null,
    MODIFY COLUMN c2 varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null,
    MODIFY COLUMN c3 varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null,
    MODIFY COLUMN c4 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null,
    MODIFY COLUMN c5 varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null;】

    三:注意

    假如你想更新一个字段为utf8mb4发现

    Column ‘columnname’ cannot be part of FULLTEXT index 这个错误

    原因是这个字段属于当前表的全文索引字段,需要把当前表的其他全文索引字段同时一起更新为utf8mb4参考数据库ddl案例第三句(同时更新操作)

    查询当前表的索引:show index from tbname; 结果的Index_type列可以看出哪些是FULLTEXT(全文索引)

    关于utf8mb4_general_ci和utf8mb4_unicode_ci的选择,看你原来数据库是什么,保证不要影响left join(左右两边如果字符集排序不同会有报错的坑,具体的自己挖,我没遇到过),同时假如对mysql数据库有硬性的特殊字符或表情排序规则(基本不存在,有这需求建议放到es做搜索用)请使用utf8mb4_unicode_ci

    !!!个人测试结果:无需重启数据库和应用,升级成功

    附一个特殊高级表情符号,这个符号无法被EmojiParser类解析:𝙉𝙞𝙠𝙚
    𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚𝙉𝙞𝙠𝙚

    展开全文
  • mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。 最低支持版本为5.5.3+ 根据网上...

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

    最低支持版本为5.5.3+

    根据网上大多数的教程设置编码格式总是保存不成功。

    终于查了很多资料后解决。

    首先设置数据库格式

    服务器端

    修改数据库配置文件/etc/my.cnf,添加下面的配置,然后重启服务器:

    [mysqld]
    character-set-server=utf8mb4
    collation_server=utf8mb4_unicode_ci
    init-connect="SET NAMES utf8mb4"
     
    [mysql]
    default-character-set=utf8mb4

     重启之后,登录 mysql,可以通过show variables like 'character%';查看编码是否已经修改成功。修改成功应该类似如下:

    mysql> show variables like '%char%';
    +--------------------------+----------------------------------+
    | Variable_name            | Value                            |
    +--------------------------+----------------------------------+
    | character_set_client     | utf8mb4                          |
    | character_set_connection | utf8mb4                          |
    | character_set_database   | utf8mb4                          |
    | character_set_filesystem | binary                           |
    | character_set_results    | utf8mb4                          |
    | character_set_server     | utf8mb4                          |
    | character_set_system     | utf8                             |
    | character_sets_dir       | /usr/local/mysql/share/charsets/ |
    +--------------------------+----------------------------------+
    8 rows in set (0.00 sec)

    然后再修改相应的数据库表的编码为 utf8mb4:

    ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

    全部设置完毕仍然存不进去emoji表情。

    最后在连接数据库时,预先执行一条sql语句,结果可以成功保存。

    我是自己配的数据库源

    dataSource = new BasicDataSource();
    List<String> list = new ArrayList<String>(); 
    list.add("SET NAMES 'utf8mb4'");
    dataSource.setConnectionInitSqls(list);

     

    转载于:https://www.cnblogs.com/zimublog/p/8963346.html

    展开全文
  • mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。最低支持版本为5.5.3+根据网上大多数...

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

    最低支持版本为5.5.3+

    根据网上大多数的教程设置编码格式总是保存不成功。

    终于查了很多资料后解决。

    首先设置数据库格式

    服务器端

    修改数据库配置文件/etc/my.cnf,添加下面的配置,然后重启服务器:

    [mysqld]

    character-set-server=utf8mb4

    collation_server=utf8mb4_unicode_ci

    init-connect="SET NAMES utf8mb4"[mysql]default-character-set=utf8mb4

    重启之后,登录 mysql,可以通过show variables like 'character%';查看编码是否已经修改成功。修改成功应该类似如下:

    mysql> show variables like '%char%';

    +--------------------------+----------------------------------+

    | Variable_name | Value |

    +--------------------------+----------------------------------+

    | character_set_client | utf8mb4 |

    | character_set_connection | utf8mb4 |

    | character_set_database | utf8mb4 |

    | character_set_filesystem | binary |

    | character_set_results | utf8mb4 |

    | character_set_server | utf8mb4 |

    | character_set_system | utf8 |

    | character_sets_dir | /usr/local/mysql/share/charsets/ |

    +--------------------------+----------------------------------+

    8 rows in set (0.00 sec)

    然后再修改相应的数据库表的编码为 utf8mb4:

    ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4;

    全部设置完毕仍然存不进去emoji表情。

    最后在连接数据库时,预先执行一条sql语句,结果可以成功保存。

    我是自己配的数据库源

    dataSource = newBasicDataSource();

    List list = new ArrayList();

    list.add("SET NAMES 'utf8mb4'");

    dataSource.setConnectionInitSqls(list);

    展开全文
  • 数据库存储emoji表情

    2018-05-18 10:23:16
    (1)首先,把数据库表编码改成 utf8mb4 编码 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4; (2)也可把某个含有emoji信息的字段编码改成 utf8mb4 编码 ALTER TABLE 表名MODIFY COLUMN signature ...
  • mysql数据库存储emoji表情

    千次阅读 2016-12-22 09:23:26
    修改mysql的字符编码集为了存储emoji表情
  • 存储 emoji 表情,因为 utf8 不支持,需要修改字符集 科普: mysql默认的所占字节数是3个字节的,对于大部分语言来说比如说汉字什么来说是足够的,但是emoji表情有日本文字转化而来,其占了4个字节,所以在存储...
  • 可以先查看自己的一个数据库表的字符集 SHOW FULL COLUMNS FROM tablename ; 然后修改自己要存贮emoji字符集的列 ALTER TABLE tablename MODIFY 列名 LONGTEXT charset utf8mb4 ; ...
  • 设置数据库表字段为数据类型:utf8mb4(存储表情字段以及查询用到的相关varchar类型字段,如果存储表情字段不在查询语句中出现,可以只设置存储字段为utf8mb4类型) 可能出现异常:( 敲黑板啦,很重要 ),要防止...
  • mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。最低支持版本为5.5.3+根据网上大多数...
  • 自己在新建数据库表的时候字符集已经用的是utf8mb4,但是排序规则不是utf8mb4_unicode_ci。 插入表情报错。查询了一下网上的解决办法: 【1】修改mysql的my.cnf文件 [client] default-character-set=utf8mb4 ...
  • 数据库存储emoji表情 Incorrect string value: ‘\xF0\x9F\x91\x80’ for column 记一次项目中存储微信昵称时的异常 Incorrect string value: ‘\xF0\x9F\x91\x80’ for column 在项目中会统一编码集,utf8是可变...
  • 异常:java.sql.SQLException: Incorrect string ... MySql的utf-8编码只支持3个字节的数据,而移动端的emoji是四个字节的数据,如果直接往utf-8编码的数据库中插入表情,就会报上面的错误。  utf8mb4编码兼容ut...
  • 最近在做微信端 web 程序开发,IOS端用户在输入时可能输入 emoji 字符,由于 utf8的 mysql 数据库并不支持存储这种字符,会报Incorrect string value: ‘\xF0\x9F\x98\x97\xF0\x9F…’ 的类似错误 第一眼看到这个错误...
  • 表情是好看的 但是在存储的时候出现了一些小问题 存储进去数据库的时候报错了个人环境 后端 spring boot 连接池JDBC 数据库Mysql 5.7.24 前端 vue刚开始的时候报错 百度了下了解到是因为数据库默认的字符集是utf8 ...
  • 在做个人信息入库的时候经常会遇到一个问题,那就是用户的昵称里带有emoji表情在入库的时候往往...这也就导致在存储这类数据的时候无法识别用全部用”?“处理 我们只需要修改数据的字段类型,选用utf8mb4类型即可。...
  • mysql数据库存储emoji表情出错的解决方案 Cause: java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x97\xE2\x98…’ for column ‘content’ at row 1\r\n###。。。。 问题分析: 昨天代码测试,有个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 685
精华内容 274
热门标签
关键字:

数据库存储emoji