关闭

mysql字符集浅谈

标签: mysql字符集
605人阅读 评论(0) 收藏 举报
分类:

官方文档地址:
http://dev.mysql.com/doc/refman/5.6/en/globalization.html

查看数据库状态

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.6.13, for Linux (x86_64) using  EditLine wrapper

Connection id:      2
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.6.13-log Source distribution
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /usr/local/mysql/mysql.sock
Uptime:         20 min 53 sec

Threads: 2  Questions: 6  Slow queries: 0  Opens: 70  Flush tables: 1  Open tables: 63  Queries per second avg: 0.004
--------------

查看当前数据库字符集

mysql> show variables like '%character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.01 sec)

字符集编码:

简单举个不太恰当的例子说明
假设有两个字符A B,然后对A编码为0,B编码为1.那么字符串”AABBB”编码后就是”00111”,就形成了字符集.
通常数据库的字符集编码包括utf8(国际)gbk(中文)latin1(拉丁1版本)

mysql有6个关键位置使用了字符集

Client          前端编码<charset =utf-8> 客户端
Connection  连接编码url  ip..?charset=utf8
Database    数据库编码
Results     返回客户端的编码
Server  install  安装时候指定的编码
System  os操作系统编码

检测字符集的方法

SHOW CHARACTER SET;  #包括哪些编码类型
SHOW COLLATION; 
SHOW VARIABLES LIKE 'character%'; 
SHOW VARIABLES LIKEcollation%’; 
HEX、LENGTH、CHAR_LENGTH #SQL函数
CHARSET、COLLATION #SQL函数

乱码总结

  1. 客户端的数据格式与声明的 character_set_client不符 例如: <charset gbk>
  2. character_set_results与客户端页面不符合的时候 <charset=gbk>
    避免乱码问题:
客户端页面  ==  character_set_client  ==  character_set_results  == character_set_connection == character_set_database == character_set_server

修改字符集

  1. set names utf8; 与如下效果相同
    SET character_set_client=’utf8’;
    SET character_set_connection=’utf8’;
    SET character_set_results=’utf8’;

  2. My.cnf 里面:

#保证和数据库编码一致,当mysql客户端链接过来时候,不管是什么字符集,都会按server字符集存储,保证数据库字符集一致
skip-character-set-client-handshake 
#链接默认字符集
init-connect='SET NAMES utf8'
#整个数据库字符集
character-set-server=utf8 

字符集转换过程

字符集转换过程

数据迁移中的字符集

保证两个数据库的字符集是一样的,通过SHOW VARIABLES LIKE 'character%'; 查看
数据丢失 utf8->gbk->latin1 utf8迁移到gbk会丢失,gbk迁移到latin会丢失

数据备份恢复的字符集设定

  1. 物理备份恢复基本ok
  2. 逻辑备份
    Gbk表+utf8表混合在一起,使用binary(二进制)备份恢复
    字符集变更了,使用逻辑备份恢复方式,否则直接ddl可能导致数据丢失。
    跨版本升级的-逻辑备份恢复数据
    数据恢复的时候加mysqldump参数default_charectar_set=utf8/gbk逻辑备份的时候一定要保持一致,
0
0
查看评论

浅谈MySQL字符集

字符集例子:在mysql里面存储一个a,其实在里面存的是“97” 字符集==字符+编码 常用的中文字符集:GBK–》国标 (左边是中文,右边是编码)韩文字符集、日文字符集、美国字符集(ASCII码)、西欧字符集 Unicode字符集(里面整合了中文、韩文、美国等的字符集)(常用的utf-8...
  • qq_18312025
  • qq_18312025
  • 2017-11-01 21:11
  • 40

深入Mysql字符集设置[精华结合]

深入Mysql字符集设置,建议大家看本文之前先看风雪之隅的文章,需要的朋友可以参考下。 基本概念 • 字符(Character)是指人类语言中最小的表义符号。例如'A'、'B'等; • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,...
  • haiross
  • haiross
  • 2016-04-28 13:38
  • 435

MySQL常用命令介绍以及字符集问题

一、测试软件:MySQL5绿色版 Window简体中文平台 Eclipse3.4二、安装以及配置     两种方式:通过注册服务,开机自动运行或使用CMD启动MySQL     1、添加服务(前提条件:已将$MySQL_...
  • hqcchina
  • hqcchina
  • 2009-06-02 22:35
  • 1513

关于修改mysql字符集的问题

查看字符集: 1.show character set;或show char set;  查看数据库支持的所有字符集  2.status;或\s;  查看当前状态里面包括当然的字符集设置  3.show variables like 'cha...
  • huangyunzeng2008
  • huangyunzeng2008
  • 2011-12-02 12:19
  • 3685

mysql的字符集和整理是怎么一回事

在MySQL数据库中,特别是创建表的时候,因为经常使用集成工具来创建,总是对一个词特别困惑,整理(collation),字符集很容易理解,就是数据库中的数据要用什么编码格式进行编码,那整理呢?今天查了一下MySQL的开发文档,文档中对这个东西做了一个很有意思的描述,我把大概意思表述一下:什么是整理假...
  • zdavb
  • zdavb
  • 2016-01-08 20:56
  • 839

在Java中解决MySQL5.0中文字符集问题全程详细记录

                         ...
  • zieckey
  • zieckey
  • 2007-01-27 22:38
  • 3706

MySQL字符集乱码简单讲解

MySQL字符集乱码简单讲解   闻名遐迩的MySQL乱码问题(转) 2009-06-07 11:22 一、概述   公司新购了一批PC,准备把几个性能较优的PC升级为数据库服务器,替换老旧的机器。公司有套POS终端软件,后台数据存储是 MySQL 3.23 版。我准...
  • haiross
  • haiross
  • 2015-12-28 13:25
  • 1327

MySQL表类型,字符集知识汇总【MySQL】

这是我开始学mysql的一些笔记都是自己写到日记本上然后在敲出来的!真的很辛苦里面的备注也做的很好!后期如果有机会我会给你们做一个视频!如果感觉我写的很好就请关注我哦!最下方是我的微信联系方式。
  • baidu_35519473
  • baidu_35519473
  • 2016-07-08 09:57
  • 185

linux 配置源码安装的MySQL同时支持多个字符集

转自:http://hi.baidu.com/pingxlz/blog/item/dda01f0d6f01e2d17acbe1f7.html 一、mysql的多字符集支持     1、设置mysqld服务同时支持多个字符集      ...
  • forest_boy
  • forest_boy
  • 2011-12-09 00:36
  • 538

深入Mysql字符集设置

基本概念 • 字符(Character)是指人类语言中最小的表义符号。例如’A'、’B'等; • 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0...
  • fdipzone
  • fdipzone
  • 2014-01-12 11:36
  • 4987
    个人资料
    • 访问:2013580次
    • 积分:15288
    • 等级:
    • 排名:第887名
    • 原创:148篇
    • 转载:241篇
    • 译文:0篇
    • 评论:235条
    最新评论