mysql客户端查看中文乱码和emoji表情无法插入的问题
大家好,因为最近休息不太好,心态不太好,工作上才缓过来,所以之前好久没有分享过了,照顾不周,还请谅解哈~
最近打算每周把工作和自己在网站制作中的问题做专题总结,所以决定以后会大概每周一篇的频率来分享,最近在做一个按照一定周期复习自己录入的题目的网站,在初期遇到了mysql客户端查询时,中文乱码的问题,于是这周来总结一下。
问题出现的原因总共有这几类:
1.server本身设定问题,例如还停留在latin1
2.table的语系设定问题(包含character与collation)
3.客户端程式(例如php)的连线语系设定问题
只有5.5.3以后的mysql才支持utf8mb4,所以先确认你的mysql的版本是否支持。
命令:select version();
下面第一项,其实我是分隔符,喵喵~
一、server本身设定问题:
1.首先看server本身的设定问题:
show variables like’%char%’;
客户端中输入命令会产生如下图所示的配置:
为了存储汉字时不发生乱码,以及存储emoji表情,除了charact_set_filesystem都要改成utf8mb4,命令如下:
set character_set_system=utf8mb4;
之后通过show variables like “%colla%”命令来查看collation的编码,如果不是utf8mb4_general_ci,通过命令:
set collation_connection = utf8mb4_general_ci;
换成utf8mb4_general_ci。
如果想要mysql服务器重启时使配置仍然生效,可以改配置文件,在/etc/mysql/my.cnf文件的对应节点添加一下信息:
[client]
default-character-set=utf8mb4
[mysqld]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
前面中间的大黑,摆个pose.....
二、table的语系设定问题:
检查数据库的character set:
show create database question;
如果不是utf8mb4,将其改为utf8mb4,命令如下:
ALTER DATABASE `question` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
设置数据表的默认编码为utf8mb4:
ALTER TABLE `question` DEFAULT CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci;
设置数据表的指定字段为utf8mb4:
ALTER TABLE `question` CHANGE COLUMN `name` `name` varchar(12)
CHARACTER SET utf8mb4;
那年花开,哪知此景竟只能追忆.....
三、php连接语系设定语句:
在执行mysql请求之前运行如下命令:
mysql_query("set character set ‘utf8mb4"");//读库
mysql_query("set names ‘utf8mb4"");//写库
- Google版小程序来了,还带来了一个时间流正常的微博「客户端」
- (马上行动)推荐有奖!!!
- 想了解一点点奶茶店经营失败的真正原因吗?点击查看详情
- 招募:美术老师!
- MySQL 引擎特性:InnoDB IO 子系统
- 廊坊广播电视台新闻客户端“HI廊坊”上线
- 女性查看早孕的办法有几种?
- 课程推荐:武术基础组合教学
- 课程推荐:国际竞赛第二套拳术课程
- 月刷悦有礼