教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL乱码问题以及utf8mb4字符集

MySQL乱码问题以及utf8mb4字符集

发布时间:2017-02-11   编辑:jiaochengji.com
教程集为您提供MySQL乱码问题以及utf8mb4字符集等资源,欢迎您收藏本站,我们将为您提供最新的MySQL乱码问题以及utf8mb4字符集资源
utf8mb4编码支持一些符号了,如果我们希望mysql支持的话也得使用utf8mb4编码了,今天来年在使用utf8mb4过程碰到的一些问题与处理办法。

乱码

推荐大家看 深入MySQL字符集设置 ,区分检查client端、server端的编码;最简单暴力的方式,是在所有的环节都显式明确的指定相同的编码。

比如使用python的MySQLdb连接MySQL时默认的charset是latin1,需要自己指定charset=’utf8′,即使是在服务器端的init-connect=’SET NAMES utf8′,MySQLdb也会使用latin1覆盖该选项;可以参照这篇文章;

emoji表情与utf8mb4

关于emoji表情的话mysql的utf8是不支持,需要修改设置为utf8mb4,才能支持, 详细emoji表情与utf8mb4的关系 。

MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区, BMP是从哪到哪,到http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters 这里看,基本就是0000~FFFF这一区。 从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。

utf8mb4 is a superset of utf8

utf8mb4兼容utf8,且比utf8能表示更多的字符。

修改方法

服务器端

修改数据库配置文件/etc/my.cnf

character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci

重启MySQL(按照官方文档,这两个选项都是可以动态设置的,但是实际的经验是Server必须重启一下)

已有的表修改编码为utf8mb4

ALTER TABLE
tbl_name
 CONVERT TO CHARACTER SET
charset_name

使用下面这个语句只是修改了表的default编码

ALTER TABLE etape_prospection CHARSET=utf8;

客户端

jdbc的连接字符串不支持utf8mb4,这个 这种方式 来解决的,如果服务器端设置了character_set_server=utf8mb4,则客户端会自动将传过去的utf-8视作utf8mb4。

Connector/J did not support  utf8mb4  for servers 5.5.2 and newer.Connector/J now auto-detects servers configured withcharacter_set_server=utf8mb4  or treats the Java encoding  utf-8 passed using  characterEncoding=... as  utf8mb4  in the  SET NAMES=  calls it makes when establishing the connection. (Bug #54175)

其他的client端,比如php、python需要看下client是否支持,如果不能在连接字符串中指定的话,可以在获取连接之后,执行”set names utf8mb4″来解决这个问题;

因为utf8mb4是utf8的超集,理论上即使client修改字符集为utf8mb4,也会不会对已有的utf8编码读取产生任何问题。

您可能感兴趣的文章:
MySQL乱码问题以及utf8mb4字符集
mysql中字符集 utf8 和utf8mb4 有什么区别?
mysql db字符集升级至utf8mb4的方案
mysql5.5.3以上版本支持存储emoji
mysql提示Incorrect string value: ‘\xF0\x9F\x9B\xB3, …’ for column ‘option_value’解决办法
简单明了!utf8和utf8mb4的区别
查询mysql编码以及解决mysql乱码问题
Mysql字符集设置详解
解决Navicat for mysql 中文保存出现乱码的问题
mysql中文乱码解决方法汇总

[关闭]
~ ~