资讯专栏INFORMATION COLUMN

MySQL emoji支持

ybak / 3392人阅读

摘要:概述编码可能个字节个字节个字节的字符,但是的编码只支持字节的数据,而移动端的表情数据是个字节的字符。前置条件服务器版本不能低于驱动版本不能低于重启数据库。检查数据库变量更改现有数据库表字段编码工单描述如此一来,表情应该不是问题了。

概述

utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常:

java.sql.SQLException: Incorrect string value: ‘xF0x9Fx92x94’ for column ‘name’ at row 1

针对该问题处理最简单的方式是更改数据库的编码为utf8mb4,直接将问题扼杀在摇篮中。

前置条件

MySQL服务器版本不能低于5.5.3;

MySQL驱动版本不能低于5.1.13;

my.cnf
[client] 
default-character-set = utf8mb4 
[mysql] 
default-character-set = utf8mb4 
[mysqld] 
character-set-client-handshake = FALSE 
character-set-server = utf8mb4 
collation-server = utf8mb4_general_ci 
init_connect="SET NAMES utf8mb4"

重启数据库。

检查数据库变量
SHOW VARIABLES WHERE Variable_name LIKE "character_set_%" OR Variable_name LIKE "collation%";
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 utf8mb4
collation_connection utf8mb4_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
更改现有数据库、表、字段编码
ALTER DATABASE `ticketdb` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `ticket_description` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `ticket_description`
MODIFY COLUMN `description`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT "工单描述" AFTER `id`;

如此一来,emoji表情应该不是问题了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/48174.html

相关文章

  • Application无法传递Emoji字符到MySQL的问题

    摘要:中无法存储字符,源自于之前编码只支持最大个字节,而需要个字节。事实上,如果只是某个列存在字符的存储问题,那就只需要修改这个列的编码类型即可。这涉及到应用与建立连接的问题。有一条命令是,会将的编码统一设置。使用这条命令便可以达到我们的目的。 MySQL中无法存储Emoji字符,源自于MySQL 5.5之前utf8编码只支持最大3个字节,而Emoji需要4个字节。从MySQL 5.5开始,...

    dmlllll 评论0 收藏0
  • Application无法传递Emoji字符到MySQL的问题

    摘要:中无法存储字符,源自于之前编码只支持最大个字节,而需要个字节。事实上,如果只是某个列存在字符的存储问题,那就只需要修改这个列的编码类型即可。这涉及到应用与建立连接的问题。有一条命令是,会将的编码统一设置。使用这条命令便可以达到我们的目的。 MySQL中无法存储Emoji字符,源自于MySQL 5.5之前utf8编码只支持最大3个字节,而Emoji需要4个字节。从MySQL 5.5开始,...

    whinc 评论0 收藏0
  • Emoji的编码以及常见问题处理

    摘要:题外话补充一点是一种字符编码方法,它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。带有的字符串截取在这类编程语言中一个中文字符的长度为,但是对大部分的并非全部取长度则是。 我在虎嗅上看过一篇关于Emoji的趣闻, 特别有意思, 在这里跟大家分享一下。里面提到了Emoji是怎么诞生的。 1999年前后,日本一个名叫栗田穰崇的年轻人,和许多直男一样, 给女友发的短信经常会被误解。...

    wemall 评论0 收藏0
  • Mysql支持emoji表情

    摘要:教程所示图片使用的是仓库图片,网速过慢的朋友请移步原文支持表情。因为评论里面有表情,所以需要数据库支持编码。摸索后发现,需要更改的配置文件。在创建表格时候,设置字符集是,如下图所示最后,各式各样的表情就可以存储在数据库了 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情。 更多讨论或者错误提交,也请移步。 1. 前言 ...

    FuisonDesign 评论0 收藏0
  • Mysql支持emoji表情

    摘要:教程所示图片使用的是仓库图片,网速过慢的朋友请移步原文支持表情。因为评论里面有表情,所以需要数据库支持编码。摸索后发现,需要更改的配置文件。在创建表格时候,设置字符集是,如下图所示最后,各式各样的表情就可以存储在数据库了 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情。 更多讨论或者错误提交,也请移步。 1. 前言 ...

    blair 评论0 收藏0
  • Mysql支持emoji表情

    摘要:教程所示图片使用的是仓库图片,网速过慢的朋友请移步原文支持表情。因为评论里面有表情,所以需要数据库支持编码。摸索后发现,需要更改的配置文件。在创建表格时候,设置字符集是,如下图所示最后,各式各样的表情就可以存储在数据库了 教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)Mysql 支持 emoji 表情。 更多讨论或者错误提交,也请移步。 1. 前言 ...

    MiracleWong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<