Windows 10家庭中文版,MySQL  5.7.20,2018-05-07

Part.1 查找数据库的字符集编码

查看MySQL字符集编码:status命令

使用命令行登录MySQL服务器,然后输入status命令,可以查看到服务器的字符集编码及其它信息。

从下图可以看到,我的服务器(Server characterset)、数据库(Db characterset)的字符集编码是latin1。

上图找到了四个字符集编码,它们各自代表什么意思呢?

-Server characterset

数据库服务器的默认字符集编码,在后续创建数据库时,若无指定字符集编码,则新建的数据库默认使用此字符集编码。

-Db characterset

当前没有选择数据库(use database_name)时,显示新建数据库的默认字符集编码,同Server character;若已选择数

据库,则显示数据库的真实字符集编码。下图显示了一个字符集编码为utf8的数据库的status信息。

-Client characterset、Conn. characterset

客户端本身的字符集编码 和 客户端和服务器此时建立连接所使用的字符集编码。

还可以使用show variables命令查看更多字符集编码信息:show variables like 'char%'

show variables还可以查看更多的数据库的信息,可以使用help show variables命令查看它的具体用法

说明,show variables命令可以显示数据库的所有系统变量——全部 或者 根据需要查找,里面的有些变量可以放到数据库的启动

配置文件my.ini中,从而修改数据库的配置信息。更多资料和权威信息,请参考官网链接Server System Variables

Part.2 修改数据库默认字符集编码

两个问题:

为什么要修改默认字符集编码?

默认的是latin1,不支持中文,而我要存储的数据包括中文,因此,要更改。

当然,不更改也可以,这样的话,每次创建新的数据库时就需要指定字符集编码,如下:

create database if not exists test2 default charset utf8 collate utf8_general_ci;

将默认字符集编码修改为什么?

utf8(是utf8,不是utf-8,没有短横线)!

两种方式:

1.在命令行客户端修改

set character_set_server=utf8;

警告,这种方式在命令行客户端重启后无效。

试验:修改后创建数据库,检查新建数据库的字符集编码,预期是utf8。

2.在数据库服务器配置文件my.ini中修改

在my.ini文件中添加下面两行中任意一行即可默认字符集编码设置为utf8(存在于[mysqld]下面):

character_set_server = utf8
character-set-server = utf8

两行有什么区别吗?第一行用下划线连接,第二行用短横线连接,但是,都有效。

再次强调,是utf8,不是utf-8(短横线)。

这种方式就没有第一种的问题了,但是呢,配置后需要重启数据库服务器才会生效。

Part.3 附录

1.show variables、show status(显示数据库服务器状态)显示的内容太多——一屏显示不完,怎么办呢?

输出到文件中!

方法如下:

mysql -uroot -p -e "show variables" > d:\mysql.txt

回车,输入root账号密码,再回车即可将结果保存到d盘的mysql.txt文件中(保存到csv文件中或许更好?)。

注意,show variables命令用双引号括起来,单引号不行。

2.可以使用show character set;查看MySQL数据库服务器支持的字符集

3.服务器、数据库、表的字符集编码关系

若在创建数据库时没有指定,则其字符集编码 同 服务器;

若在数据库中创建表时没有指定,则其字符集编码 同 所在数据库。

不过,服务器、数据库、表的编码都可以通过命令行进行修改(各个字段的字符集编码也可以单独指定)。

4.查看表Table的编码

使用show create table...命令,如下图所示。

5.遗留问题

my.ini配置文件中的[mysqld]、[client]、[mysql]分别意味着什么?

参考链接:

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

https://dev.mysql.com/doc/refman/8.0/en/charset-configuration.html

https://blog.csdn.net/hwhua1986/article/details/53431852

https://blog.csdn.net/enlyhua/article/details/79638776

https://www.cnblogs.com/jiangxiaobo/p/6110647.html

https://zhidao.baidu.com/question/539586616.html

https://www.2cto.com/database/201112/114418.html

https://www.cnblogs.com/candle806/archive/2013/01/14/2859721.html

MySQL字符集编码相关的更多相关文章

  1. MySQL字符集编码

    MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并參考了 ...

  2. 从一个慢查询到MySQL字符集编码

    从一个慢查询到MySQL字符集编码 目录 从一个慢查询到MySQL字符集编码 1. 问题起源 2. MySQL字符集和字符集排序规则 2.1 字符集相关概念 2.2 MySQL中的字符集和字符集排序规 ...

  3. linux下mysql字符集编码问题的修改

    安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...

  4. mysql字符集编码乱码测试如下

    创建三个表tb_latin1,tb_utf8,tb_gbk,编码分别为latin1/utf8/gbk “你好a”字符串编码如下GBK : %C4%E3 %BA%C3 %61UTF-8 : %E4%BD ...

  5. MySQL字符集编码的理解分析

    今天帮同事处理一个棘手的事情,问题是这样的: 无论在客户机用哪个版本的mysql客户端连接服务器,发现只要服务器端设置了 character-set-server = utf8之后, characte ...

  6. mysql字符编码相关

    mysql> show variables like '%character%'; +--------------------------+--------------------------- ...

  7. mysql 查看编码方式

    一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Va ...

  8. Mysql查看编码方式

    查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Varia ...

  9. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

随机推荐

  1. BZOJ2436 [Noi2011]Noi嘉年华 【dp】

    题目链接 BZOJ2436 题解 看这\(O(n^3)\)的数据范围,可以想到区间\(dp\) 发现同一个会场的活动可以重叠,所以暴力求出\(num[l][r]\)表示离散化后\([l,r]\)的完整 ...

  2. redis动态扩展内存

    需求:将redis内存从1G扩展到3G,不中断服务 1.打开客户端 # redis-cli -p 6391 2.查看当前值 redis 127.0.0.1:6391> config get ma ...

  3. Java EE之JSTL(下)

    3.使用国际化和格式化标签库(FMT命名空间) 如果你希望创建部署在Web上,并面向庞大的国际化用户的企业级Java应用程序,那么你最终需要为世界的特定区域进行应用程序本地化.这将通过国际化实现(通常 ...

  4. Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决

    最近发现新版的AS,IDEA毛病不断,而且gradle的更新又给墙了,无奈啊! 进入类似如下的目录,发现如果没有对应的gradle解压文件,则在gradle官网下载完整压缩包,放入类似55xxxx串号 ...

  5. BZOJ 4321 queue2

    4321: queue2 Description n 个沙茶,被编号 1~n.排完队之后,每个沙茶希望,自己的相邻的两人只要无一个人的编号和自己的编号相差为 1(+1 或-1)就行: 现在想知道,存在 ...

  6. EOJ 262 润清的烦恼

    ——题目出处zhoutb2333 题解: 3e6可以带一个log 又是下取整问题.但是分块会TLE. 这样考虑,我们把式子拆成两个部分. 我们先算出来每一个x的[ai/x]项,再算出来[x/ai]项. ...

  7. Service Fabric Cluster Manager

    作者:潘罡 (Van Pan)@ Microsoft 我们回到Service Fabric最底层的话题,谈谈Service Fabric是怎么工作的. 首先,我们回到下面的文档,看看Service F ...

  8. Lvs+Keepalived实现MySQL高可用

    LVS+Keepalived+MySQL高可用配置 本文所有配置前提是已实现MySQL双主备份(MySQL双主) 安装前的准备: VIP:192.168.0.201 Keepalived: Keepa ...

  9. JavaScript中的arguments详解

    1. arguments arguments不是真正的数组,它是一个实参对象,每个实参对象都包含以数字为索引的一组元素以及length属性. (function () { console.log(ar ...

  10. JDBC编程扩展

    数据库的分类:关系型数据库.非关系型数据库.这跟数据库的发展相关.关系型数据库:mysql.oracle.sqlserver非关系型数据库:redis.memcathe.mogodb.hadoop1. ...