当前位置:  开发笔记 > 后端 > 正文

字符集和整理意味着什么?

如何解决《字符集和整理意味着什么?》经验,为你挑选了3个好方法。

我可以阅读MySQL文档,它非常清楚.但是,如何决定使用哪个字符集?整理有哪些数据会产生影响?

我要求解释这两个以及如何选择它们.



1> Dan Esparza..:

来自MySQL 文档:

字符集是一组符号和编码.甲归类为在一个字符集的字符进行比较的一组规则.让我们用虚构字符集的例子来区分清楚.

假设我们有一个带有四个字母的字母:'A','B','a','b'.我们给每个字母一个数字:'A'= 0,'B'= 1,'a'= 2,'b'= 3.字母'A'是一个符号,数字0是'A'的编码,所有四个字母及其编码的组合是一个字符集.

现在,假设我们想比较两个字符串值'A'和'B'.最简单的方法是查看编码:0表示"A",1表示"B".因为0小于1,我们说'A'小于'B'.现在,我们刚刚完成的是对我们的字符集应用排序规则.排序规则是一组规则(在这种情况下只有一条规则):"比较编码".我们称这种最简单的所有可能的归类都是二进制整理.

但是如果我们想说小写和大写字母是等价的呢?然后我们将至少有两条规则:(1)将小写字母'a'和'b'视为等同于'A'和'B'; (2)然后比较编码.我们称之为不区分大小写的排序规则.它比二进制排序规则复杂一点.

在现实生活中,大多数字符集都有许多字符:不只是'A'和'B',而是整个字母,有时是多个字母或具有数千个字符的东部书写系统,以及许多特殊符号和标点符号.同样在现实生活中,大多数校对都有许多规则:不仅不区分大小写,而且还有重音不敏感("重音"是德语'ö'中附加到字符上的标记)和多字符映射(例如' ö'='OE'在德国两个校对中的一个).



2> mat..:

甲字符编码是使得它们适合在存储器来编码字符的方式.也就是说,如果字符集是ISO-8859-15,欧元符号€将被编码为0xa4,而在UTF-8中,它将被编码为0xe282ac.

该整理是如何比较字符,在latin9,有字母e é è ê f,如果排序由二进制表示,它会去e f é ê è,但是当核对设定,例如,法语,你就会有他们的顺序,你认为他们将是,所有人e é è ê都是平等的,然后f.


需要注意的是,单个字符集可能有许多不同的排序规则."正确"的语言取决于文本的语义,通常由其编写的语言决定.

3> erickson..:

字符集是所有书写字形的子集.字符编码指定这些字符如何映射到数值.某些字符编码(如UTF-8和UTF-16)可以编码通用字符集中的任何字符.其他像US-ASCII或ISO-8859-1只能编码一个小子集,因为它们分别使用每个字符7和8位.由于许多标准都指定了字符集和字符编码,因此术语"字符集"通常可以自由地替换为"字符编码".

排序规则包括指定如何比较字符以进行排序的规则.排序规则可以是特定于语言环境的:两个字符的正确顺序因语言而异.

选择字符集和整理归结为您的应用程序是否已国际化.如果没有,您定位的是哪个区域设置?

为了选择您想要支持的字符集,您必须考虑您的应用程序.如果要存储用户提供的输入,则可能很难预见最终将使用软件的所有语言环境.为了支持它们,最好从一开始就支持UCS(Unicode).但是,这需要付出代价; 许多西欧角色现在每个角色需要两个字节的存储而不是一个.

如果数据库使用排序规则来创建索引,并且稍后使用该索引提供排序结果,则选择正确的排序规则可以帮助提高性能.但是,由于排序规则通常是特定于语言环境的,因此如果需要根据其他语言环境的规则对结果进行排序,则该索引将毫无价值.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有