• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 深入Mysql字符集设置 图文版

深入Mysql字符集设置 图文版

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了深入mysql,深入理解mysql,深入敌后,深入敌后2,日本深入抬腿式图等相关知识,希望本文的分享对您有所帮助

在mysql客户端与mysql服务端之间,存在着一个字符集转换器。

character_set_client          =>gbk:转换器就知道客户端发送过来的是gbk格式的编码

character_set_connection=>gbk:将客户端传送过来的数据转换成gbk格式

character_set_results        =>gbk:

注:以上三个字符集可以使用set names gbk来统一进行设置

例子:

create table test(

name varchar(64) NOT NULL

)charset utf8;#这里的utf8表示服务器端的字符编码

 

首先,往数据表test中插入一条数据

inert into test values('测试');

则,数据“测试”在数据库中是以“utf8”格式保存的

过程:

 

首先,通过mysql客户端,将数据发送给Mysql服务器,经过字符集转换器的时候,由于character_set_connection 值为gbk,所以会将客户端发送过来的数据转为gbk格式,紧接着,字符集转换器将数据要传送给服务器的时候,发现服务器是以utf8保存数据的,所以,在其内部会自动将数据由gbk转换成utf8格式

什么时候会出现乱码?

    客户端的数据格式与声明的 character_set_client不符

        通过 header('Content-type:text/html;charset=utf8');将客户端的数据转成utf8格式的,在数据经过“字符集转换器”的时候,由于character_set_client=gbk,而character_set_connection也等于gbk,所以从客户端传送过来的数据(其实是utf8格式)并不会被转换格式。

        但是,字符集转换器在讲数据发送给服务器的时候,发现服务器要的格式是utf8,所以会将当前数          据当做gbk格式来处理,从而转成utf8(但是,这一步其实已经错了。。。)。

    2.  result与客户端页面不符合的时候        

 将返回结果的格式设置为utf8,但是客户端接受的格式为gbk,因此会出现乱码

通过show character set 语法,可以显示所有可用的字符集

latin字符集

注意:Maxlen列显示用于存储一个字符的最大的字节数目。

utf8字符集

 

gbk字符集

什么时候会丢失数据?

对比以上三幅图可以知道,每种字符集中,用于存储一个字符的最大的字节数目都不同,utf8最大,latin最小。所以在经过字符集转换器的时候,如果处理不当,会造成数据丢失,而且是无法挽回的。

比如:

将character_set_connection的值改为lantin的时候

从客户端发送过来的gbk数据,会被转成lantin1格式,因为gbk格式的数据占用的字符数较多,从而会造成数据丢失

总结:

character_set_client和character_set_results 一般情况下要一致,因为一个表示客户端发送的数据格式,另一个表示客户端接受的数据格式为了避免造成数据丢失,需让 character_set_connection的字符编码 大于 character_set_client的字符编码

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入Mysql字符集设置 图文版
  • 深入Mysql字符集设置[精华结合]
  • 深入Mysql字符集设置分析

相关文章

  • 2017-05-11安装mysql noinstall zip版
  • 2018-12-05MongoDB结合Flexgrid的简单数据呈现
  • 2017-05-11DBA应该知道的一些关于SQL Server跟踪标记的使用
  • 2017-05-11MySQL 查询某个字段不重复的所有记录
  • 2017-09-17mysql-cluster 使用介绍
  • 2018-12-05什么是MongoDB?MongoDB简介
  • 2017-05-11MySQL数据库MyISAM存储引擎转为Innodb的方法
  • 2018-12-05mysql中提高Order by语句查询效率的两个思路分析
  • 2018-12-05Mysql索引和优化
  • 2018-12-05Oracle 数据库操作技巧集

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql数据库在Centos7下无法远程连接的原因以及解决详解
    • mysql语句入门详解
    • 让MySQL数据库跑的更快 为数据减肥
    • 关于反引号的8篇文章推荐
    • 如何解决Mysql启动报ERROR:2002的分析
    • Mysql建表与索引使用规范详解
    • 详解MySQL根(Root)密码在Linux(CentOS)下如何重置(图文)
    • Oracle数据库安全策略分析(二)
    • sqlserver查询锁住sql以及解锁的方法
    • mysql下普通索引和唯一索引的效率对比

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有