MySQL字符集编码相关
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字符集编码相关的更多相关文章
- MySQL字符集编码
MySQL字符集编码总结 之前内部博客上凯哥分享了一篇关于mysql字符集的文章,之前我对mysql字符集一块基本没有深究过,看到凯哥文章后有些地方有点疑惑,遂自己去看了mysql的官方文档,并參考了 ...
- 从一个慢查询到MySQL字符集编码
从一个慢查询到MySQL字符集编码 目录 从一个慢查询到MySQL字符集编码 1. 问题起源 2. MySQL字符集和字符集排序规则 2.1 字符集相关概念 2.2 MySQL中的字符集和字符集排序规 ...
- linux下mysql字符集编码问题的修改
安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件:由于linux下MySQL的默认安装目录分布在不同的文件下:不像windo ...
- mysql字符集编码乱码测试如下
创建三个表tb_latin1,tb_utf8,tb_gbk,编码分别为latin1/utf8/gbk “你好a”字符串编码如下GBK : %C4%E3 %BA%C3 %61UTF-8 : %E4%BD ...
- MySQL字符集编码的理解分析
今天帮同事处理一个棘手的事情,问题是这样的: 无论在客户机用哪个版本的mysql客户端连接服务器,发现只要服务器端设置了 character-set-server = utf8之后, characte ...
- mysql字符编码相关
mysql> show variables like '%character%'; +--------------------------+--------------------------- ...
- mysql 查看编码方式
一. 查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Va ...
- Mysql查看编码方式
查看数据库的字符集 show variables like 'character\_set\_%'; 输出: +--------------------------+--------+ | Varia ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
随机推荐
- 阿里大鱼短信发送,放到项目中报错Java.lang.NoClassDefFoundError:com/aliyuncs/exceptions/ClientException,已解决
由于项目中使用的短信服务发送的消息太慢,所以把采用了阿里大鱼的短信服务,花费了几个小时,通过审核,发现可以单独运行.但是,放到web项目中会报错(Java.lang.NoClassDefFoundEr ...
- Tomcat8.0配置JNDI多数据源
jndi配置 :此种配置需要在Tomcat的server.xml中和context.xml中配置数据源,在项目中引用. 需要在tomcat下加入数据库连接的jar包,相关包(ojdbc14;c3p0数 ...
- 【bzoj3575】 Hnoi2014—道路堵塞
http://www.lydsy.com/JudgeOnline/problem.php?id=3575 (题目链接) 题意 给出一个有向图和一条最短路,问最短路上任意一条边断掉,此时的最短路是多少. ...
- 破解PostgresSQL登录的6种方法
第一种方式Hydra: Hydra通常是首选工具,它可以对50多种协议执行快速字典暴力攻击,包括telnet,postgres,http,https,smb服务和各种数据库等.现在需要选择一个字典 ...
- 洛谷大宁的邀请赛~元旦祭F: U17264 photo(线段树)
标程的写法稍微有点麻烦,其实不需要平衡树也是可以做的. 线段树上维护从左端点开始最远的有拍照的长度,以及区间的最大值. 考虑两段区间合并的时候,显然左区间必须取,右区间的第一个比左区间最大值大的数开始 ...
- JDBC详解(一)
一.相关概念介绍 1.1.数据库驱动 这里驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡,同样道理 ...
- R语言外部数据读取
0 引言 使用R语言.Python等进行数据处理的第一步就是要导入数据(也可以使用UCI数据集),下文主要根据R语言的帮助文档来介绍外部文件数据的导入方法和注意事项.下面先附上一些指令. 1 格式r ...
- 查看oracle数据库编码:
1.客户端编码 查看方法:打开数据库所在服务器的注册表(在运行窗口中输入regedit打开)HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0-& ...
- JVM小结--类文件结构
字节码是构成Java平台无关性的基石.实现语言无关性的基础是虚拟机和字节码存储格式. Java语言中的各种变量.关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的语义描述能力肯定 ...
- java.lang.NoClassDefFoundError: org/hibernate/service/ServiceRegistry] 类似问题
使用Hibernate时出现以上错误,在Java Project中运行无误,但是来到Dynamic Web Project中却出现了如下错误: hibernate 报错:java.lang.NoCla ...