编码查看方式以及解释说明:
需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root –p,之后两次输入root用户的密码),查看数据库的编码方式命令为:
 >show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
 
从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;
其中,
character_set_client: 为客户端编码方式;客户端发送的查询中使用的字符集
character_set_connection: 为建立连接使用的编码;
character_set_database: 数据库的编码;数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。
character_set_results:结果集的编码;
有待验证:只要保证以上几个采用的编码方式一样,就不会出现乱码问题。
character_set_server: 数据库服务器的编码;服务器安装时指定的默认字符集设定。
character_system: 数据库系统使用的字符集设定。
另一个查看数据库编码的命令:
>SHOW VARIABLES LIKE 'collation%';
 
MYSQL关于字符编码方面的存储原理
程序配置文件.连接串: CharSet=UTF8, 说明:
查询语句使用此种编码格式发送到服务器上
注意:查询结果仍然是以反回数据的格式传送。
查询语句执行逻辑:
1. 程序配置连接串: CharSet=UTF8, 将查询语句使用"CharSet=UTF8"此种格式的编码发送到服务器上
2. Mysql将接收到的查询语句转成character_set_client指定的格式,
3. 接着转成character_set_connection指定的格式
4. 接着将character_set_connection转为内部操作字符
       - 使用每个数据字段的CHARACTER SET设定值;
       - 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
       - 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
       - 若上述值不存在,则使用character_set_server设定值。
5. 将操作结果从内部操作字符集转换为character_set_results。
 
执行语句执行逻辑
1. 程序配置连接串: CharSet=UTF8, 将执行语句使用"CharSet=UTF8"此种格式的编码发送到服务器上
2. Mysql将接收到的查询语句转成character_set_client指定的格式,
3. 接着转成character_set_connection指定的格式
4. 接着将character_set_connection转为内部操作字符
       - 使用每个数据字段的CHARACTER SET设定值;
       - 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
       - 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
       - 若上述值不存在,则使用character_set_server设定值。
5. 将操作结果从内部操作字符集转换为character_set_database储存
 

Mysql编码, Mysql编码流程, Mysql编码顺序, Mysql编码原理, Mysql编码修改依据的更多相关文章

  1. 关于MySQL 5.6 中文乱码的问题(尤其是windows的gbk编码)

    一般MySQL 数据库乱码由以下几种情况造成(按照顺序): 1. 创建数据库的时候没设置编码,解决办法: 就是在创建数据库的时候设置编码, 例如: CREATE DATABASE `mydb` CHA ...

  2. vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)

    [编译中遇见的问题]       ①在用vc 6.0去调用MySQL中的数据时,出现中文乱码       ②不明白mysql中的码制 [开始解决问题]      ①打开mysql控制台         ...

  3. 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码

    MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...

  4. Mysql 5.7.12解压版的安装及配置系统编码

    这篇博文是由于上篇EF+MySql博文引发的,上篇博文中在Seed方法中插入中文数据到Mysql数据库中乱码,后来网上找了N种方法也没解决.重装了MySql并在安装过程中配置了系统编码,此篇记录一下. ...

  5. 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序

    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来 ...

  6. MySQL架构总览->查询执行流程->SQL解析顺序

    Reference:  https://www.cnblogs.com/annsshadow/p/5037667.html 前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后 ...

  7. 步步深入MySQL:架构->查询执行流程->SQL解析顺序!

    一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...

  8. mysql(一)--mysql架构和执行流程

    1. 一条查询 SQL 语句是如何执行的? 我们的程序或者工具要操作数据库,第一步要做什么事情? 跟数据库建立连接.   1.1. 通信协议 首先,MySQL 必须要运行一个服务,监听默认的 3306 ...

  9. activiti部署流程定义时出错:INSERT INTO ACT_GE_BYTEARRAY,修改数据库编码

    activiti部署流程定义时出错 // 部署流程定义 Deployment deployment = deploymentBuilder.deploy(); 错误信息:(有乱码的...没留下截图.. ...

随机推荐

  1. MyEclipse取消验证Js的两种途径.

    前言:有时我们通过js写一个web工程的相关页面时感觉很卡,修改内存也不行下面有俩种解决方法: 1.  选中当前工程—properties—MyEclipse—validation—Excluded ...

  2. tar 压缩去除目录

    tar zcvf fd.tar.gz  *  --exclude=file1 --exclude=dir1 注意: 1.yes: --exclude=file1 no: --exclude file1 ...

  3. 【数位dp】bzoj2089 不要62

    http://www.cnblogs.com/xiaohongmao/p/3473599.html #include<cstdio> using namespace std; int n, ...

  4. Spring的定时任务配置(转)

    spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTas ...

  5. HTML回顾

    <frameset>和<body>是同一级的,已经在html5中被弃用    结合---->    效果   注意::::span标签不自动换行****

  6. SQL到NOSQL的思维转变

    NOSQL系统一般都会宣传一个特性,那就是性能好,然后为什么呢?关系型数据库发展了这么多年,各种优化工作已经做得很深了,NOSQL系统一般都是吸收关系型数据库的技术,然后,到底是什么因素束缚了关系型数 ...

  7. 让asp.net和php同时在Linux上跑起来

    实现这个想法有很多种方法,我就我最近算是比较熟悉的方式来说给大家吧. 因为有了mono,所以.net才能跨平台,.net都跨平台了,.net平台的童鞋们是不是应该提起精神好好了解下mono呢? 当然了 ...

  8. [MSSQL2012]LEAD函数

    LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本 DECLARE @TestData TABLE(     ID INT IDENTITY(1,1), ...

  9. Windows下使用Redis(一)安装使用

    一.Redis 是什么 Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store).它通常被称为数据结构服务器,因为值(value)可以是 字符串(S ...

  10. 【HTML5】Canvas 内部元素添加事件处理

    前言 canvas 没有提供为其内部元素添加事件监听的方法,因此如果要使 canvas 内的元素能够响应事件,需要自己动手实现.实现方法也很简单,首先获得鼠标在 canvas 上的坐标,计算当前坐标在 ...