软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> 【MySQL】统一控制台 -> 正文阅读

[数据库]【MySQL】统一控制台


折腾了很久,看了很多解决方案,要么就是pma能显示中文,控制台乱码,要么就PHP调用显示出来是乱码,很蛋疼,觉得必须要写个文章总结一下。
1. 理解MySQL的编码机制
MySQL处理连接时,外部连接发送过来的SQL请求会根据以下顺序进行转换:
character_set_client           //客户连接所采用的字符集
|
character_set_connection  //MySQL连接字符集
|
character_set_database    //数据库所采用的字符集(表,列)
|
character_set_results        //客户机显示所采用的字符集
详见:mysql编码详解


除此之外,还有数据库字符集、表字符集、字段字符集。


2.产生乱码的根本原因在于
① 客户机没有正确地设置client字符集,导致原先的SQL语句被转换成connection所指字符集,而这种转换,是会丢失信息的,如果client是utf8格式,那么如果转换成gb2312格式,这其中必定会丢失信息,反之则不会丢失。一定要保证connection的字符集大于client字符集才能保证转换不丢失信息。
② 数据库字体没有设置正确,如果数据库字体设置不正确,那么connection字符集转换成database字符集照样丢失编码,原因跟上面一样。

3. 解决控制台-pma乱码
我这里提供的方法是,将所有字符集统一为utf8
①统一 client、connection、database的字符集。

set character_set_client = gbk;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = gbk;

这里说明一下,client=gbk是为了可以在控制台中输入中文,results=gbk是为了可以在控制台中显示中文。
修改完之后查看一下
 show variables like "char%";
[img]+--------------------------+------------------------------------+
| Variable_name            | Value                              |
+--------------------------+------------------------------------+
| character_set_client     | gbk                                |
| character_set_connection | gbk                               |
| character_set_database   | utf8                               |
| character_set_filesystem | binary                             |
| character_set_results    | gbk                                |
| character_set_server     | utf8                               |
| character_set_system     | utf8                               |
| character_sets_dir       | d:\WebServer\MySQL\share\charsets\ |
+--------------------------+------------------------------------+
②统一 数据库、数据表、表字段的字符集。
第一步:查看特定数据库字符集
查看数据库db_test的字符集
show create database db_test;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| db_test  | CREATE DATABASE `db_test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+------------------------------------------------------------------+
[img]
如图,可以看出来是 db_test数据库的字符集已经是utf8了
第二步:查看指定数据表字符集
查看数据表person的字符集

show create table person;
[img]CREATE TABLE `person` (
  `name` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
如图,可以看出来我的数据表也是utf8的字符集
第三步:查看指定表字段的字符集


show full columns from person;
[img]+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type        | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| name  | varchar(30) | utf8_general_ci | NO   |     | NULL    |       | select,insert,update,references |         |
+-------+-------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
这个是排序字符集utf8_general_ci,但是如果没有人为改动的话,可以认为字段字符集为utf8,要是不确定的话,就直接修改。
第四步:修改字符集为utf8
修改数据库字符集

alter database db_test charset utf8;
修改表字符集

alter table person charset utf8;

修改字段字符集

alter table `person` modify column `name` varchar(30) character set utf8 not null;
(我这里同时设置了字段name不能为空,并且为varchar(30)类型)
更多修改方法请参考百度!!
以上为临时设置。重启mysql后又会恢复到原状,所以在mysql目录下的my.ini配置文件中的[mysqld]节点下加一句:
character_set_server=utf8
[img]
4. 解决PHP获取数据的乱码情况
[img]
在连接字符串中加一句:charset=utf8,即可。
[img]
5. 测试
在pma中添加一个中文,然后在控制台和pma和php中查看,
在php中执行一个插入中文语句,然后在控制台-pma-php中查看
在cmd中插入一个中文,然后在其他地方查看。
效果如如下:
cmd中:
[img][img]
pma中:
[img][img]
php中(网页编码格式为UTF-8):
[img]

[img]





......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-03-28 21:48:11  
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年7日历
2018-7-19 13:41:08
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --