mysql utf8mb4
遇到的问题 有一个项目需要存储 emoji 表情。另外极少数中文在存储的时候也遇到 utf8 编码格式的数据库在储存时报错。 Rails creating schema_migrations - Mysql2::Error: Specified key was too long 问题原因 mysql 里的 utf8 一个字符最多 字节,只支持 BMP 这部分的 unicode 编码区 BMP 是从哪到哪,基本就是0000~FFFF这一区 utf8mb4 则扩展到一个字符最多能有 字节,所以能支持更多的字符集 结论 utf8mb4 兼容 utf8 且比 utf8 能表示更多的字符 至于什么时候用,看unicode编码区 从 - 就属于传统 utf8 区,当然 utf8mb4 也兼容这个区, 行以下就是 utf8mb4 扩充区,什么时候你需要存储那些字符,你才用 utf8mb4 否则只是浪费空间 涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集 utf8mb4 是 utf8 的超集 升级步骤 备份数据库 升级 MySQL Server 到 v5.5.3+ (低版本不支持这个字符集、复制报错) select version(); 查看数据库版本 修改 database、table 和 column 字符集 # For each database: ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; # For each table: ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # For each column: ALTER TABLE table_name CHANGE column_name column_name VARCHAR() CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # Example ALTER TABLE `table_name` MODIFY COLUMN `column_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.) 修改 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_unicode_ci init_connect='SET NAMES utf8mb4' 重启 MySQL Server、检查字符集 mysql> 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 | utf8 | | collation_connection | utf8mb4_unicode_ci | | collation_database | utf8mb4_unicode_ci | | collation_server | utf8mb4_unicode_ci | +--------------------------+--------------------+ rows in set (0.00 sec) Rails 的 database.yml 里面的字符集配置也要改 encoding: utf8mb4 如何把 emoji 编码转换为 emoji 表情 Encode and decode emoji unicode characters into emoji-cheat-sheet form 阿里云 RDS 对 utf8mb4 的支持 RDS 是支持 utf8mb4 编码的。如果在数据库管理界面修改之后,对新创建的表默认就是支持 utf8mb4 ,对已经存在表,在字段上做字符集的修改操作才可以。 参考文章 MySQL utf8mb4 字符集:支持 emoji 表情符号 MySQL设置utf8mb4编码 Mysql处理emoji表情 Rails .2でiOS5の絵文字を扱う The utf8mb4 Character Set (-Byte UTF- Unicode Encoding) Rails not ready for mysql 5.5 utf8mb4 MySQL UTF8MB4 breaks ActiveRecord schema setup
mysql utf8mb4的更多相关文章
- mysql : utf8mb4 的问题
微信呢称和QQ呢称上有很多火星文和emoji表情图片,这些数据,如果直接insert到mysql数据库,一般会报错,设置成utf8都不好使,必须改成utf8mb4编码,这二者的区别见: mysql u ...
- mysql utf8mb4与emoji表情
一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里 ...
- 字符集UTF-8MB4 MySQL utf8mb4 字符集,用于存储emoji表情
字符集UTF-8MB4 utf8mb4兼容utf8,且比utf8能表示更多的字符.看unicode编码区从1 - 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8m ...
- mysql utf8mb4 设置
[mysqld]collation-server=utf8mb4_general_ciinit-connect='SET NAMES utf8mb4'character-set-server=utf8 ...
- mysql utf8mb4 所引起的问题
有一个项目需要存储ios的表情(emoji表情)这种表情虽然是utf8编码,但是一个字符需要占用4个字节,而MySQL utf8编码只能存放3字节的字符.在MySQL 5.6中,可以设置编码为utf8 ...
- 关于MySQL utf8mb4 字符集中字符串长度的问题
MySQL之前推出的utf8字符集中,一个汉字占3个字节,新的utf8mb4字符集中一个汉字占4个字节. 那么我们平时建表的时候输入的varchar=16这种,到底指的是字符长度还是字节长度? 如果是 ...
- JDBC对Mysql utf8mb4字符集的处理
写在前面 在开发微信小程序的时候,评论服务模块希望添加上emoji表情,但是emoji表情是4个字节长度的,所以需要进行设置 当前项目是JAVA编写, 使用JDBC连接操作数据库, 如下针对的JDBC ...
- Mysql UTF-8mb4字符集的问题
官方Mysql手册链接 https://dev.mysql.com/doc/connectors/en/connector-j-reference-charsets.html Notes For Co ...
- scala slick mysql utf8mb4 支持
语言 scala sql包 slick 3.2.0 数据库 mysql https://stackoverflow.com/questions/36741141/scala-slick-jdbc ...
随机推荐
- PL/SQL编码规范的一些建议
由于业务的复杂多变,我们编写完的程序,在后期肯定要被修改,而且修改的人很可能不是自己.这种情况我们都遇到过. 而且,看别人的代码可能会觉得很痛苦:为什么他要这样写相关逻辑?为什么变量名称要这样定义?换 ...
- Android Studio 3.0.1 又见恶心爆的bug。。。xiete
写了个AIDL的东西,结果一直编译不通过: Error:Execution failed for task ':app:compileDebugAidl'. > java.io.IOExcept ...
- angularjs 做不到实时脏值查询
angularjs 做不到脏值查询 ,数据请求过来,不操作其他按钮,请求的值就是展示不出来:(相当于,只有手动触发,angularjs内部才会把脏值查询出来): 解决办法:在请求过来的值旁边加上$sc ...
- 关于WSSE验证-- 一种验证用户的方法
大家通常验证用户做法: 1. BASIC验证模式: 把用户名和密码采用Base64编码之后,放在HTTP HEADER里,发到服务器的. 2. FORM验证模式: 就什么都不处理,直接发到服务器. 3 ...
- 第五次Scrum冲刺
第五次Scrum冲刺 1.成员今日完成情况 队员 今日完成任务 刘佳 前端初步构建 李佳 后端设计初级阶段 周世元 数据设计 杨小妮 博客编写 许燕婷 管理团队当日及次日任务 陈水莲 测试矩阵用例设计 ...
- 文字在线转图片二维码的公用API接口
在线生成网址二维码的API接口: 1.百度网盘(可使用https) http://pan.baidu.com/share/qrcode?w=150&h=150&url=ht ...
- WEB常用前端开发调试工具介绍
只要是设计开发,就需要进行调试,尽管相对来说,前端的调试要简单一些,但使用一些调试工具或插件还是能提高你的工作效率.下面是一些主要用于IE浏览器环境和Firefox浏览器环境等的调试工具简介. 一.I ...
- 04_web基础(九)考核与评估
- Android Studio SVN配置
一 . 原文链接:忽略文件[转] https://blog.csdn.net/buaaroid/article/details/51546521 1.用Android Studio创建一个项目, ...
- Spring AOP @Aspect
spring提供了两个核心功能,一个是IoC(控制反转),另外一个便是Aop(面向切面编程),IoC有助于应用对象之间的解耦,AOP则可以实现横切关注点(如日志.安全.缓存和事务管理)与他们所影响的对 ...