MySQL数据库编码

article/2025/10/23 5:34:04

1 MySQL数据库编码解析

    登录MySQL之后,输入如下命令来查询数据库编码,

						show variables like "char%";

    可得到如下查询结果,
在这里插入图片描述
    查询结果所含信息如下,


        ①character_set_client:utf8,表示MySQL的客户端采用的是utf8编码,即:对于MySQL客户端将要向MySQL服务器端发送过来的SQL请求内容,客户端会采用utf8字符集编码规则进行编码发送。

PS:通常,在命令行窗口(CMD)中进行SQL查询时,如果结果集中包含中文汉字,就会显示乱码,这是由于此时作为MySQL客户端的CMD默认采用GBK编码格式,而MySQL服务器端是以utf8编码格式发送数据,就造成了乱码的出现。

        ②character_set_connection:utf8,表示连接MySQL数据库时采用的是utf8编码格式;
        ③character_set_database:utf8,表示创建MySQL数据库时默认采用utf8编码格式;
        ④character_set_results:utf8,表示数据据库返回给客户端查询结果时采用的编码格式;
        ⑤character_set_server:utf8,表示MySQL服务器安装时采用的默认编码格式,不建议人为修改;
        ⑥character_set_system:utf8,表示数据库系统使用的编码格式,是存储元数据时采用的编码格式,无需设置;
        ⑦character_set_dir:指向字符集安装的目录位置。
    其中,三个系统变量不会影响到是否乱码的问题,包括:character_set_filesystem,character_set_system,character_set_dir,而只需要关注其它几个变量是否符合要求。
在这里插入图片描述


2 SQL查询过程中的编码格式转换

在这里插入图片描述
    如上图所示,由MySQL客户端向MySQL服务器端发送SQL查询请求,并由MySQL服务器端接受请求,返回查询结果。在这个过程中,
在这里插入图片描述

3MySQL字符集和排序规则举例

    以创建数据表为例,需要为每一个新的字段指定字符集和排序规则,如下图所示,
在这里插入图片描述

    其中,
        (1)每一种字符集都对应着一套具体的编码规范,如果在只包含客户端和服务器双方的消息传递过程中,双方采用的字符集不一致,就会造成双方解码失败,造成乱码。
        (2)排序规则指定了在指定字符集下,字符以及序列的排序规则,通常有一些固定的命名规范。以MySQL中的utf8字符集为例,如下图所示,例如:_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary)。
在这里插入图片描述
在这里插入图片描述

4 MySQL的字符集和排序规则

    MySQL中对于字符集的支持细化到4个层次:服务器(Server)、数据库(database)、数据表(table)和数据库连接(connection)。
    而排序规则定义了字符之间如何比较(大小、等值判断)的规则,每一个字符集都需要对应着一组(至少一个)排序规则。这个在3中也已经通过例子进行介绍。

5 MySQL字符集/编码格式的修改

    通过以上的介绍,可以得知:设若MySQL客户端和MySQL服务器端采用的字符集不一致,就会导致乱码问题的出现。
    以CMD窗口为例,倘若通过CMD命令行方式连接MySQL服务器,此时,CMD就成为MySQL服务器的客户端之一,但是CMD默认采用ASCII(中文GBK编码格式),是不可修改的,而如下图所示,此时MySQL服务器端的返回结果集采用的是utf8编码格式,下面尝试进行SQL查询。
在这里插入图片描述
    SQL查询语句为:select * from emp;,查询结果中显示为中文乱码,

在这里插入图片描述

    为了避免遇到中文乱码的情况,就需要对MySQL的编码格式进行修改,主要修改的就是MySQL客户端(character_set_client)、连接(character_set_connection)、结果集(character_set_results)3者的字符集进行设置,设置的方法由以下两种,
        (1)临时性设置,即:只在当前窗口内有效,窗口关闭后再重新打开,编码格式还是原先的utf8编码格式。

	set character_set_XXX = “gbk”;

        (2)永久性设置-修改安装目录下的配置文件my.ini。{51-57行内容}

[client]port=3306[mysql]default-character-set=utf8

    将default-character-set的值修改为utf8或者gbk即可。

6 MySQL在CMD窗口下的乱码问题解决示例

    一般情况下,MySQL的乱码问题只存在于CMD窗口中,原因:在进行JavaWeb项目开发时,Java语言默认支持的就是utf-8编码格式,几乎不会用到GBK编码。
    根据2中SQL查询过程可知,返回到客户端CMD窗口(默认支持GBK编码格式,也无法修改)的数据最终采用的是character_set_results编码格式,那么想要在CMD窗口中不出现乱码,就可以采用临时性的设置,命令如下,

set character_set_results = "gbk";

在这里插入图片描述
    再次执行相同的SQL查询,查询结果如下,中文不乱码。
在这里插入图片描述
    关闭CMD再重新查看时,又变为utf8,则产生中文乱码。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/1ikT3D7i.shtml

相关文章

编程语言的类型

解释型语言和编译型语言 解释型语言是把源代码的每一条语句在运行时通过解释器编译成机器语言(按语句编译,边说边翻译) 编译型语言是将整个源程序代码一次性编译成机器码,机器最直接读这个机器码文件(一次性编译&…

编程语言发展简史

编程语言发展简史 一、编程的起源二、第一代计算机语言——机器语言三、第二代计算机语言——汇编语言四、第三代计算机语言——高级语言2022年4月[TIOBE编程排行榜](https://www.tiobe.com/tiobe-index/)高级语言的分类:1.解释型和编译型2.面向过程和面向对象 一、…

常见的十几种编程语言介绍

作为一名小白,在刚接触编程的时候,常常不了解这些编程语言具体有什么用途,或者说不知道应该学习哪种语言能实现自己想要从事的IT领域方向,于是,结合自身学习经验以及资料查找,我整理了一些常见的编程语言的介绍,帮助大家认识了解编程语言的特点、用途,从而快速明确学习…

学生的第一门编程语言应该是什么?

“学生第一次开始学习计算机科学(computer science,CS)时,应该从哪种编程语言开始学习?”这一问题一直让教育工作者备受困扰。来自密歇根大学的计算机科学教授 Mark Guzdial 也对此进行了大量思考与研究,然而其近期发表在《ACM 通讯》上的一…

编程语言是怎么发展的?

说到编程语言,我们通常会想到JAVA、C#之类的。不知道你有没有好奇过,编程语言到底是怎么发展而来的。别急,听小编慢慢道来。 编程语言的定义为计算机和人都能识别的语言,通过编程语言,程序员将指令发给计算机&#xf…

如果编程语言是一门武功绝学

学习编程与武功绝学 武侠小说中,各路侠客绿林好汉都是从基本功开始一招一式学起,掌握了足够多的招式后,加之勤学苦练,量变引起质变,会有一天打开任督二脉顿悟出这些招式背后的哲学逻辑,成为一代宗师。在编程的学习过程中,我们何尝不是从一招一式的函数、语法、特性等学…

什么是 Python 编程语言?

Python:是世界上最流行的解释型编程语言之一。Python 由 Guido van Rossum 设计,作为“ABC”编程语言的继承者,于 1991 年首次发布。它是一种高级通用语言,其设计理念是通过使用缩进来强调代码的可读性。Python 的语言结构旨在帮助…

世界上到底有多少种编程语言

今天在找选题的时候,发现一篇《世界上最不流行的编程语言》。程序员常常讨论世界上最流行的编程语言有哪些,各种编程语言排行榜也会定时发布出来,例如Python、JavaScript、Java这些耳熟能详,排在各大榜单前列的流行编程语言&#…

Python 编程语言

💂 个人网站: 海拥 —— 一个乐于分享技术与快乐的博主🤟 版权: 本文由【海拥】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦💅 想寻找共同摸鱼的小伙伴,…

python是一种编程语言吗?,python语言是编程语言吗

python语言是什么? Python是一种计算机程序设计语言,你可能已经听说过很多流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript等,Python…

第一门编程语言,我应该学什么?

作者 | Daniel Bastos 译者 | 弯月 责编 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 软件工程师问我最多的一个问题就是,第一门编程语言应该学什么。这可能是开发人员学习过程中最大的困惑,以至于许多人觉得在得到百分百正确的…

第一门编程语言选谁?

Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹&…

输入电阻定义

MOSFET的栅极是绝缘的,所以 i G ≈ 0 i_G \approx 0 iG​≈0,输入阻抗很高 定义:对不含独立电源(可以含受控源)的端口网络,定义端口的电压和电流之比为该端口网络的输入电阻(入端电阻&#xf…

关于电路中输入阻抗和输出阻抗大小的讨论

前言 很多同学搞不清楚为什么说输入、输出阻抗大小是大好还是小好,在这里我要简单概述一下。对于输入阻抗来说,输入阻抗越大越好,因为这样落到放大器上的电压就越大,更接近信号源电压(信号源内阻索取的就越小&#xf…

阻抗匹配的简单理解

阿尔伯特爱因斯坦声称:“科学的大多数基本思想本质上都很简单,并且通常可以用每个人都能理解的语言来表达。” 我不确定 21 世纪的物理学是否仍然如此(试着找一个能简单解释超弦理论的人)。尽管如此,这也是我对本专栏的…

如何用示波器测量输出阻抗

本文介绍了测量函数信号发生器、放大器或其他电路的输出阻抗的方法。这种方法适用于频率较低的场景,并不适应于所有的电路类型。本实验中用低频(1k Hz)的正弦波测量。 本文以汉泰的 DSO8060 为例,测量其输出阻抗,该示波器带有信号…

什么是阻抗?影响阻抗的因素有哪些?

问 什么是阻抗? 答 在具有电阻、电感和电容的电路里,对电路中的电流所起的阻碍作用叫做阻抗。 问 什么是阻抗匹配? 答 阻抗匹配是指信号源或者传输线跟负载之间达到一种适合的搭配。阻抗匹配主要有两点作用,调整负载功率和…

为什么阻抗匹配是输入阻抗与输出阻抗相等?

要说明什么是阻抗匹配,首先要知道有这么两个概念:输入阻抗和输出阻抗,那么什么是输入阻抗和输出阻抗呢? 输入阻抗Zin是由电阻或设备输入端看进去的阻抗。 而输出阻抗Zout是由设备输出端看过去的阻抗。任意电阻或设备的输出可以等…

输入阻抗-输出阻抗-阻抗匹配原理详解

本文转载来源:阻抗匹配是什么意思_阻抗匹配原理详解-电子发烧友网 (elecfans.com) 本文主要详解什么是阻抗匹配,首先介绍了输入及输出阻抗是什么,其次介绍了阻抗匹配的原理,最后阐述了阻抗匹配的应用领域。 一、输入阻抗 输入阻抗…

什么是阻抗?

目录 1、电阻和阻抗 2、电容和阻抗 3、电感和阻抗 在电子产品设计时,经常听到工程师说:阻抗多少?阻抗匹配吗? 那么什么是阻抗? 在一般状态下,导体多少都存有阻止电流流动的作用,其阻止程度…