首页 技术 正文
技术 2022年11月18日
0 收藏 571 点赞 4,761 浏览 2313 个字
遇到的问题有一个项目需要存储 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;# ExampleALTER 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 = FALSEcharacter-set-server = utf8mb4collation-server = utf8mb4_unicode_ciinit_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 utf8mb4MySQL UTF8MB4 breaks ActiveRecord schema setup
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,965
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,486
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,331
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,114
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,747
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,781