0

0

MySQL之字符集与校对集

php中文网

php中文网

发布时间:2016-06-07 15:55:10

|

1232人浏览过

|

来源于php中文网

原创

由此可得出当connection和服务器的字符集比client小时,会造成数据的丢失,可能用语不是很准确,但是能理解即可以了。个人理解,就

一、字符集

1.MySQL的字符集设置非常灵活

如果某一级别没有指定字符集,则继承上一级。

查看所有字符集语句:show character set;

2.以表声明为utf-8为例,最终存储在表中的数据为utf-8

Pixlr Remove BG
Pixlr Remove BG

几秒钟删除图片背景

下载

MySQL之字符集与校对集

①我们要告诉服务器,我给你发送的数据是什么编码?character_set_client

②告诉字符集转换器,转换成什么编码?character_set_connection

③查询的结果用什么编码?character_set_results

如果以上三者都为字符集N,可简写为set names N;

3.什么情况下会出现乱码呢?

我们首先创建一个测试表指定表的字符集为utf8

create table temp(

name varchar(10)

) charset utf8;

然后执行这三条命令:

set character_set_client=gbk;

set character_set_connection=gbk;

set_character_set_results=gbk; 这三句可以简写为set names gbk;

最后往表里插入一条数据:

insert into temp values('中国');

select * from temp;这时候显示的结果是正常的。

当我们再执行这句命令时:set character_results=utf8;

出现乱码了,如图:

MySQL之字符集与校对集

由此可得出当返回的结果result的字符集与客户端的字符集不符的时候会出现乱码。

还有一种情况也会出现乱码:client声明与事实不符时,你客户端明明是utf8,你却非要叫我转成gbk的,如下图:

MySQL之字符集与校对集

可能还有很多种情况,这里没有一一列举。

4.什么情况下会造成数据的丢失呢?

执行这三条语句:

set character_set_client=gbk;

set character_set_connection=latin1;

set character_set_results=gbk;

再往表里插入一条数据:insert into temp values('美国');

最后查询的时候结果如下图:

MySQL之字符集与校对集

数据丢失了。

由此可得出当connection和服务器的字符集比client小时,会造成数据的丢失,可能用语不是很准确,但是能理解即可以了。个人理解,就跟java里面不同数据类型相互转换时一样,比如把double类型强制转换成int类型,就会造成精度的丢失一样。

。。。。。。    

二、校对集

什么是校对集?

校对集:指字符集的排序规则。

查看所有校对集语句:show collation;

一种字符集可以有一个或多个排序规则。

以utf8为例,默认是使用utf8_general_ci校对集,,也可以按二进制来排,utf8_bin

怎样声明校对集?

create table tableName

(

  ...

)charset utf8 collate utf8_general_ci;

注意:声明的校对集必须是字符集合法的校对集。比如你字符集是utf8,你不能声明gbk的校对集。

三、校对规则的“可压缩性”

在绝大多数查询中,mysql使用哪种校对规则进行比较是很显然的。例如,在下列情况中,校对规则明显的是“列x的列校对规则”:

select x from T orderbyx;

select x from T wherex = x;

select distinct x fromT;

但是,当涉及多个操作数时,可能不明确。例如:

select x from T wherex ='Y';

这个查询应该使用列x的校对规则,还是字符串文字'Y'的校对规则?

标准化SQL使用“可压缩性”规则解决这种问题。基本上,这个意思是:既然x和'Y'都有 校对规 则,哪个校对规则优先?这可能比较难解决,但是以下规则适合大多数情况:

一个外在的COLLATE子句可压缩性是0(根本不能压缩。)使用不同校对规则的两个字符串连接的可压缩性是1。列校对规则的可压缩性是2。“系统常数”(如USER()或VERSION()函数返回的字符串)可压缩性是3。文字规则的可压缩性是4。NULL或从NULL派生的表达式的可压缩性是 5。

上述可压缩性值是mysql当前所用的。

这样上述规则可以模糊解决:

使用最低的可压缩性值的校对规则。如果两侧有相同的可压缩性,那么如果校对规则不同则发生错误。

使用COERCIBILITY()函数确定一个字符串表达式的可压缩性:

mysql> SELECTCOERCIBILITY('A'COLLATE latin1_swedish_ci);

    -> 0

mysql> SELECTCOERCIBILITY(VERSION());

    -> 3

mysql> SELECTCOERCIBILITY('A');

    -> 4 

本文永久更新链接地址

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

28

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

23

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

27

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

16

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

18

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

164

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

8

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

309

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 教程
Pandas 教程

共15课时 | 1.1万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号