MySQL乱码问题以及utf8mb4字符集

1.乱码

推荐你们看 深刻MySQL字符集设置 ,区分检查client端、server端的编码;最简单暴力的方式,是在全部的环节都显式明确的指定相同的编码,包括ssh客户端也指定为相同编码。

好比使用python的MySQLdb链接MySQL时默认的charset是latin1,须要本身指定charset=’utf8′,即便是在服务器端的init-connect=’SET NAMES utf8′,MySQLdb也会使用latin1覆盖该选项;能够参照这篇文章;

emoji表情与utf8mb4

关于emoji表情的话mysql的utf8不支持,须要修改设置为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能表示更多的字符。

2.修改方法

服务器端

修改数据库配置文件/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 with character_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编码读取产生任何问题。

3.建立数据库编码为utf8mb4字符集为utf8mb4_unicode_ci的方法:

CREATE DATABASE testdb charset utf8mb4 COLLATE utf8mb4_unicode_ci;

grant select,insert,update on testdb.* to test@'%' identified by "test";

mysql乱码utfmb4_MySQL乱码问题以及utf8mb4字符集相关推荐

  1. mysql utf8mb4 乱码_MySQL乱码问题以及utf8mb4字符集

    您的位置:WenRou's Blog >lnamp> MySQL乱码问题以及utf8mb4字符集 1.为什么要使用 utf8mb4 编码 根本的原因在于,采用 utf8 编码的 MySQL ...

  2. mysql连接字符乱码_MySQL 字符集导致SQL连接之后中文乱码的问题!

    character-set-server = GB2312 collation-server = latin1_general_ci MySQL字符集 GBK.GB2312.UTF8区别 解决 MYS ...

  3. sqoop mysql 乱码_请问一下,用sqoop导数据到mysql如果遇到字段编码是utf8mb4的情况怎么处理?...

    我要到的数据其中一个字段里应该是有表情符号,之前数据库的处理是把,字段编码修改成utf8mb4.但现在用sqoop导数据到mysql(对应字段已修改为utf8mb4),却报了如下错误. 谢谢. 15/ ...

  4. mysql json 中文乱码_MySQL对JSON类型UTF-8编码导致中文乱码探讨

    前言 继上文发表之后,结合评论意见并亲自验证最终发现是编码的问题,但是对于字符编码还是有点不解,于是乎,有了本文,我们来学习字符编码,在学习的过程中,我发现对于MySQL中JSON类型的编码导致数据中 ...

  5. mysql取出的emoji表情是乱码_解决MySQL emoji表情乱码问题

    问题:解决MySQL emoji表情乱码问题 说明:在一些选择表情的功能里,往往传递到后端入库会抛出异常,这就需要进行处理,方法如下: 方式1.在mysql表点击设置中找到选项,并配置utf8mb4 ...

  6. mysql substr 中文乱码_刚碰到的MySql乱码的问题

    4 楼 yyyyy5101 2009-11-12 $conn=mysql_connect("localhost","root","123456&quo ...

  7. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

  8. mysql返回页面乱码java_解决Java程序使用MySQL时返回参数为乱码的示例教程

    先说MySQL的字符集问题.Windows下可通过修改my.ini内的 default-character-set=utf8 //客户端的默认字符集 在MySQL客户端工具中输入 SHOW VARIA ...

  9. go mysql 乱码_MySQL 乱码之我见

    先着重介绍一下mysql的字符集,这样能对产生mysql的根源有一个了解. mysql 的字符集支持有两个方面:字符集(Character set)和排序方式(Collation).另外对于字符集的支 ...

最新文章

  1. golang 使用 http socks 代理
  2. [Google Guava] 6-字符串处理:分割,连接,填充
  3. redhat php5 安装,完整的linux(RedHat)+php5.3.10+mysql5.5.19+apache2.2.22安装配置说明
  4. VMware Workstation 12新建虚拟机
  5. java对象流读取完毕_从Java 8流中获取具有最大频率的对象
  6. 【转】java基础知识总结
  7. 大数据分析平台的发展趋势如何
  8. 【Unity】Unity3D RPG游戏制作实例(二)开发思路及概要设计
  9. 计算机考试中栏间距怎么弄,word中栏间距怎么设置
  10. 配置SecureCRT密匙登录
  11. 小程序AppId-当前开发者未绑定此AppId,请到小程序管理后台操作后重试
  12. 万字长文!推荐一款日志切割神器
  13. 轻松搞定个人虚拟桌面部署之2-安装远程桌面服务
  14. echarts折线图曲线,每个值上面添加小圆点或者小圆圈
  15. L1-031 到底是不是太胖了 (10分)
  16. gym102028 problem E Resistors in Parallel (大数)
  17. 天然替代甜味剂行业调研报告 - 市场现状分析与发展前景预测
  18. 模拟登录淘宝--Python
  19. 【a】标签的伪类选择器
  20. 由一份诊断报告引发的思考

热门文章

  1. 浙大 PAT b1023
  2. 机器学习算法总结之支持向量机(二)
  3. 点云的无序性_基于深度学习的激光雷达点云物体识别方法总结
  4. 线头尾两端各插入块lisp_工作叶片采用减振块防止叶片损坏,在低压涡轮轴上要有防飞转措施...
  5. maven中pom.xml显示不正常的问题
  6. 感知机算法python实现
  7. git merge后如何撤销
  8. 【Python3爬虫】用Python中的队列来写爬虫
  9. 第二:Pycharm设置配置(非常详细)
  10. html5音乐播放时间监测,【HTML5】HTML5中video元素事件详解(实时监测当前播放时间)...