千家信息网

MySQL中如何处理字符集

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家介绍MySQL中如何处理字符集,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MySQL的字符集怎么处理发送请求客户端(character_set_client)=》
千家信息网最后更新 2026年10月31日MySQL中如何处理字符集

这篇文章给大家介绍MySQL中如何处理字符集,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

  MySQL的字符集怎么处理

  发送请求

  客户端(character_set_client)=》数据库连接(character_set_connection)=》存储(table,column)

  返回请求

  存储(table,column)=》数据库连接(character_set_connection)=》客户端(character_set_results)

  在每一个非初始节点,都会做一次从上一个结点到当前节点的字符集转换操作。举个例子,有如下环境:

  character_set_connectionutf-8character_set_resultsgbkcharacter_set_clientgb2312有表A,字段字符集全部为BIG5

  发送请求的时候,首先数据从gbk转换为utf-8,再转换为BIG5,然后再存储。

  返回请求的时候,首先数据从BIG5转换为utf-8,再转换为gb2312,然后再发送给客户端。

  MySQL字符集架构作用有哪些

  1.允许不同的客户端具有不同的字符集。典型的例子就是,我有一个utf-8的站点,这个站点就是一个charsetclient为utf-8的客户端。与此同时,我有可能需要在一个gbk的终端上读写数据库,这又是一个客户端,不过它的字符集是gbk。

  2.通过数据库操作文件系统的时候,需要把文件路径转为文件系统的字符集。例如我的客户端是gbk,而服务器文件系统是utf-8。操作"/A片/Rina.rmvb",发送过去的数据里,"片"的数据和服务器是不一样的。这时候就需要有个办法可以把转换GBK的"片"到utf-8。在这里MySQL引入了一个叫character_filesystem的东西来完成这个事情。

  除此之外,我暂时想不到其他的作用了。但是仔细想想,我们真的需要这样的处理吗很多网站,无非就是希望自己的数据能怎么进去就怎么出来。这里又有两种情况了。

  1.希望可以根据数据进行排序或者做like操作。首先说排序,对于包含中文的字段来说,根据字符集排序的概念如同鸡肋。简体中文排序,一般都是希望按拼音来排序。我没有去真正了解过MySQL里的校验,但是从我接触过的程序来看,需要做此类排序,都是专门建一个存放拼音的字段来排序。而拼音又存在多音字的情况。如果是UTF-8,还存在某个区间的中文同时被中日韩三国共用的情况。实现起来不是这么容易,所以MySQL无论的GBK还是UTF-8的校验集应该都没有实现拼音。我敢说,现在国内使用MySQL的大多数网站,所用到的校验集,只是一个byte排序而已。而byte排序,根本不需要使用什么字符集。所以说对于中文站点,MySQL字符校验在排序上没任何意义。

  但是在like操作上,倒是有了一点点意义。例如我like'%a%',就有可能匹配到某个中文某个部分含有a。当然这种情况在utf-8下不会遇到,因为utf-8的存储格式导致a只可能是a,不可能是一个多字节字符的一部分。但是在其他字符集可能就会有这个问题了。说到最后,like又变得和order一样使得校验没意义了。

  2.如果完全不需要对数据进行排序,like或者全文检索,那么请停止使用char,varchar,text之类的吧。binary,varbinary,BLOB才是正确的选择。binary之类的在存储,取出的时候都不会进行字符集转换,而在排序时候,只根据二进制内容排序,所以在效率上高出char,varchar,text很多。

  这种情况更不需要字符集了。但是按照目前MySQL的架构,在client和connection之间的字符集操作,是忽略字段类型的,在这两个节点之间,依然会进行字符集转换。

  另外提一下PHP里的设置字符集。大家请不要再使用mysql_query("setnamesutf8″)这样的语句了。mysql_set_charset()才是最完整的字符集设置方式。后者比前者多一个设置,就是把structMySQL的charset成员也设置了。这个成员变量在escape的时候起着很重要的作用,特别是对于GBK这种运行把""作为字符一部分的编码格式。如果你只使用mysql_query("setnamesXXX"),那么在某些字符集,会有重大的安全漏洞,导致mysql_real_escape_string变得和addslashes一样不安全。

  计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

关于MySQL中如何处理字符集就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

字符 字符集 排序 数据 utf-8 客户 客户端 时候 存储 情况 中文 字段 就是 拼音 数据库 文件 作用 内容 意义 站点 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 互联网科技工作委员会主任 蓝思科技飞鸽互联网 科技和互联网公司 A股互联网金融科技公司 科技互联网项目 互联网未来科技 润盈互联网科技 郑州华宇互联网科技 互联网科技的未来发展 中国最先进互联网科技公司 互联网科技公司招聘 温州喔噻互联网科技有限公司 苏州五指互联网络科技有限 华夏互联网科技业 互联网科技扶贫时间 风投北京互联网科技 济南小医互联网科技有限公司招聘 互联网科技博主张洲 互联网科技对化妆品行业 广州紫鲸互联网科技有限公司 互联网的科技创新 唐信互联网科技 大连 常德市电业局互联网科技部 顶级互联网科技成果有哪些 互联网金融中的现代科技 互联网为啥属于高科技 锡山区互联网智能科技产品供应 艺电能源互联网科技有限公司招聘 互联网 科技节活动 微视频大赛
0