一、创建一个测试数据库 及一个测试用的表。均使用默认的编码方式。

show variables like 'char%':

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

   create database dbtest

  create table utf8Latin1Table(column_utf8 varchar(30),column_latin1 varchar(30));

查看库及表的编码方式:均为 latin1

mysql> show create database dbtest;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| dbtest | CREATE DATABASE `dbtest` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> show create table test;
+-------+---------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------+
| test | CREATE TABLE `test` (
`id` varchar(10) DEFAULT NULL,
`name` varchar(30) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

查看表中字段的编码:

mysql> show full columns from utf8Latin1Table;
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| column_utf8 | varchar(30) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
| column_latin1 | varchar(30) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
2 rows in set (0.00 sec)

修改column_utf8 的编码方式 :由latin1 ------ utf8 形式

  alter table utf8Latin1Table change column_utf8 column_utf8 varchar(30) character set utf8;

 修改完字段的字符集后: 

mysql> show full columns from utf8Latin1Table;
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| column_utf8 | varchar(30) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| column_latin1 | varchar(30) | latin1_swedish_ci | YES | | NULL | | select,insert,update,references | |
+---------------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+

二、 向数据库中存入测试数据。(数据库连接工具是 UTF8 编码方式)

测试 数据为 带重音的 e :  é

é 在 latin1中的编码为:E9   在utf8字符集中编码为:C3A9

mysql> insert into utf8Latin1Table values('é','é');
Query OK, 1 row affected (0.00 sec) mysql> select * from utf8Latin1Table;
+-------------+---------------+
| column_utf8 | column_latin1 |
+-------------+---------------+
| é | é |
+-------------+---------------+
1 row in set (0.00 sec)

查看存储的二进制内容:

mysql> select hex(column_utf8),column_utf8,hex(column_latin1),column_latin1  from utf8Latin1Table;
+------------------+-------------+--------------------+---------------+
| hex(column_utf8) | column_utf8 | hex(column_latin1) | column_latin1 |
+------------------+-------------+--------------------+---------------+
| C383C2A9 | é | C3A9 | é |
+------------------+-------------+--------------------+---------------+
1 row in set (0.00 sec)

虽然存入的是一样的字符,但是存入的二进制信息不同。

三、分析Insert过程 、select 过程(未写)

涉及应用程序段字符编码(数据库查询工具,网页端等等),character_set_client ,character_set_connection,character_set_results ,及数据库编码(列编码)

insert 过程:

mysql 字符集研究的更多相关文章

  1. MySQL字符集编码

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

  2. (3.16)mysql基础深入——mysql字符集

    (3.16)mysql基础深入——mysql字符集 关键字:mysql字符集,mysql编码 目录 1.概念 2.常用的字符编码 3.查看mysql字符集 [3.1]查看服务器支持的字符集 [3.2] ...

  3. 如何修改MySQL字符集

    首先,MySQL的字符集问题主要是两个概念,一个是Character Sets,一个是Collations,前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在数据库实例.单个 ...

  4. Mysql字符集设置

    转 基本概念 • 字符(Character)是指人类语言中最小的表义符号.例如’A'.’B'等:• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encodi ...

  5. MySQL字符集

    字符集的选择 1.如果数据库只需要支持中文,数据量很大,性能要求也很高,应该选择双字节定长编码的中文字符集(如GBK).因为相对于UTF-8而言,GBK"较小",每个汉字只占2个字 ...

  6. mysql5.5字符集设置的一点变化(对于中文乱码问题,需要设置mysql字符集)

    工作中因为字符集问题没少头疼,还犯过一次错误,还好拯救及时,没有发生重大事故,唉,弄清楚点还是非常有必要的: 例如我的工作环境为CTR+redhat5+mysql5.5 在导入sql语句的时候必须要注 ...

  7. Mysql字符集知识总结

    字符集&字符编码方式 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,这里的字符可以是英文字符,汉字字符,或者其他国家语言字符. 常见字符集 ...

  8. MySQL字符集的修改和查看

    1.关于MySQL字符集 MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation). MySQL对于字符集 ...

  9. MySQL字符集转换引发插入乱码问题

    根据http://www.cnblogs.com/cchust/p/4601536.html进行验证测试 问题背景 在mysql上面执行一条普通的insert语句,结果报错: Incorrect st ...

随机推荐

  1. makefile之include

    "include"指示符告诉 make 暂停读取当前的 Makefile,而转去读取"include"指定的一个或者多个文件,完成以后再继续当前 Makefil ...

  2. ubuntu 15.04

    修改更新源: sudo vim /etc/apt/sources.list 删除里面所有内容 方法1: 按ggdG 方法2: :%d 替换源 搜狐源: deb http://mirrors.sohu. ...

  3. 路由搭建ovpn

    教程一(外网搭建): 1. 注册花生壳帐号,同时系统会赠送一个免费的域名 2.登录华硕路由,找到花生壳代码设置花生壳登录名和密码.域名,删掉前面的"#"后,点击应用本页面设置,软重 ...

  4. 一款基于HTML5 Canvas的画板涂鸦动画

    今天给各网友分享一款基于HTML5 Canvas的画板涂鸦动画.记得之前我们分享过一款HTML5 Canvas画板工具,可以切换不同的笔刷,功能十分强大.本文今天要再来分享一款基于HTML5 Canv ...

  5. 一份不错的php面试题(附答案)(笔试题)

    一.基础题1. 写出如下程序的输出结果 <?php $str1 = null; $str2 = false; echo $str1==$str2 ? '相等' : '不相等'; $str3 = ...

  6. iOS中autolaylout和sizeclass的理解

    没发现居然有三四个月没写博客了,好惭愧.都是加班太多了,还好现在换了一家,还是得继续写啊. 主要是学习了http://onevcat.com/上的内容写的笔记,并自己动手操作了一下. 已经排好版了,懒 ...

  7. PHP,JavaScript,CSS三种HTML内嵌语言的语法,变量,循环,函数记录

    PHP PHP简介: PHP 是服务器端脚本语言. PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言. PH ...

  8. shell自动交互之expect脚本_转

    转自:linux expect详解(ssh自动登录) shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 ...

  9. SSL/TLS协议运行机制的概述_转

    转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和 ...

  10. Centsos7修改密码

    CentOS 7.0 进入单用户模式修改Root密码 时间:2017-05-02 01:10来源:blog.csdn.net  作者:海哥_大大的Java 举报   点击:506次 一.启动时,随便按 ...