返回介绍

1 Character Set 与 Collation

发布于 2025-02-20 13:00:29 字数 1902 浏览 0 评论 0 收藏 0

任何资讯技术在处理资料的时候,如果只是单纯的数值和运算,那就不会有太复杂的问题;如果处理的资料是文字的话,就会面临世界上各种不同语言的问题。以资料库来说,它必须正确的储存各种不同语言的文字,也就是一个资料库中,有可能同时储存繁体和简体中文、法文等不同语言的文字。

电脑在处理文字资料大多是使用一个「编码」来表示某一个字,对 MySQL 资料库来说,为了要处理不同语言的文字,它使用一套编码来处理一种语言的文字,称为「字元集、character set」。以英文字母来说,每一个字母都有一个编码,例如 A=65、B=66、C=67。

MySQL 可以依照你的需要为资料库设定不同的字元集:

Collation 指的是在一个字元集中,所有字元的大小排序规则。以英文字母来说,我们会依照 A 到 Z 的顺序当成大小的顺序,小写的字母也是一样的。这样的大小顺序是依照编码的大小来决定的,MySQL 把它称为「binary collation」。

可是在真实的世界中,大小顺序却不是这么单纯,有时候你会把大小写的英文字母当成是一样的,例如大写的 A 和小写的 a。在这种情况下,大写和小写的字母会被当成是一样的大小,然后再依照编码来决定,例如大写 A 的编码比小写 a 的编码小。MySQL 把这样的方式称为「case-insensitive collation」。

在决定大小顺序的时候,如果只有考虑字母大小写因素的话,那还不算是太复杂的。如果再考虑各种不同语言特性的话,在决定大小顺序的时候就会变得很复杂。以繁体中文来说,它是没有区分大小写的,而且一个中文字会包含一个以上的位元组,其它的语言也都会有类似的情况。

1.1 Character Set

MySQL 资料库把各种不同字元集的编码资料纪录在系统资料库中,你可以使用下列的指令查询 MySQL 资料库支援的字元集资讯:

SHOW CHARACTER SET

执行上列的查询指令后可以得到下列的结果:

1.2 COLLATION

MySQL 除了支援各种不同的字元集,让资料库可以储存不同语言的文字外,每一种字元集都可以依照实际需要,搭配不同的 Collation 设定。你可以使用下列的指令查询 MySQL 支援的 Collation 资讯:

SHOW COLLATION

执行上列的查询指令后可以得到下列的结果:

你也可以使用类似「WHERE」子句中的条件设定,查询某一种字元集支援的 Collation 资讯:

你可以从 Collation 名称分辨出排序的准则:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文