mysql 5.0 utf8mb4_MySQL 5.5将字符集从utf8升级为utf8mb4

升级原因

MySQL默认的utf8只支持三字节字符,不支持Emoji表情符(四字节),如果有四字节的字符写入会报错。从MySQL 5.5开始,提供了utf8mb4,支持四字节的字符。许多使用iphone的用户来在填写昵称的时候会加入Emoji表情符,如果MySQL没有使用utf8mb4字符集,这样的昵称信息就无法写入。

一、升级前。

mysql> SHOW VARIABLES LIKE 'character_set%';

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

| Variable_name | Value |

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

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /home/sdkserver/local/mysql-5.5.43-linux2.6-x86_64/share/charsets/ |

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

8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation%';

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

| Variable_name | Value |

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

| collation_connection | utf8_general_ci |

| collation_database | utf8_unicode_ci |

| collation_server | utf8_unicode_ci |

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

3 rows in set (0.00 sec)

二、修改配置文件。

打开MySQL的配置文件,将字符集的配置修改成如下:

[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'

三、升级后。

mysql> SHOW VARIABLES LIKE 'character_set%';

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

| 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 | /home/nieyong/local/mysql-5.5.43/share/charsets/ |

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

8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collation%';

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

| Variable_name | Value |

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

| collation_connection | utf8mb4_general_ci |

| collation_database | utf8mb4_general_ci |

| collation_server | utf8mb4_general_ci |

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

3 rows in set (0.00 sec)

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MyBatis 5.0中,"utf8mb4_general_ci"是一种字符集,它使用了UTF-8编码,并且采用了utf8mb4_unicode_ci的排序规则。这个排序规则会考虑字符的Unicode编码和Plane的概念。Unicode字符被分为17个planes,每个plane包含65536个代码点。Plane 0(BMP)包含了世界上各种语言与标记中最常用的字符,而Plane 1(SMP)则包含了表情符号、字母与数学符号、音乐符号、太玄经(太极符号)、装饰符号、扑克牌、麻将符号、箭头扩展和一些世界上各种语言不太常用的文字等等。所以在"utf8mb4_general_ci"字符集中,可以支持更多的字符范围和Unicode编码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL字符编码的讨论:如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations](https://blog.csdn.net/dduhmy/article/details/42044243)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations](https://blog.csdn.net/codepython/article/details/50403252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值