首页
学习
活动
专区
圈层
工具
发布

utf8字符集下的比较规则

前言: 在MySQL中,比较常用的字符集是utf8和utf8mb4。...这两个字符集是类似的,utf8是utf8mb3的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,需要使用...1.utf8下比较规则概览 我们先查看下utf8字符集下支持的所有比较规则: mysql> SHOW COLLATION LIKE 'utf8\_%'; +----------------------...每种字符集都有一种默认的比较规则,SHOW COLLATION的返回结果中的Default列的值为YES的就是该字符集的默认比较规则,比方说utf8字符集默认的比较规则就是utf8_general_ci...表名 MODIFY 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称]; 2.几种比较规则对比 utf8字符集下默认的比较规则是utf8_general_ci

1.9K21

MySQL字符集utf8和utf-8的关系

是MySQL存储Unicode数据的一种可选方法 utf8 MySQL中实现了UTF-8编码的unicode 字符集 MySQL中utf8是utf8mb3的别名 utf8中,一个符号使用1~3个节点表示...对UTF-8支持不彻底,可采用utf8mb4字符集 utf8与utf8mb4的关系 都是实现了UTF-8编码的unicode 字符集 utf8仅支持基本多语言平面Basic Multilingual...个字节存储 对于BMP字符,utf8和utf8mb4具有相同的编码,相同的长度 对于非BMP字符,utf8mb4使用4个字节来存储,utf8不能存储非BMP字符 innodb中默认最大可对767个字节建立索引...使用utf8 的列最多可对255个字符建立索引 使用utf8mb4 的列最多可对191个字符建立索引 超集 字符集A,B ,B支持的所有字符A都支持,A 是B超集 比如 GBK字符集是GB2312字符集的超集...,它们又都是ASCII字符集的超集 utf8mb4是utf8的超集 字符集设置 set names x 等价于 set character_set_client=x; set character_set_connection

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL字符集你还在使用错误的utf8?

    所有在使用“utf8”的MySQL和MariaDB用户都应该改用“utf8mb4”,永远都不要再使用“utf8”。 MySQL的“utf8”不是真正的UTF-8。...“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。 MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过这个问题。 ?...但问题是,这样太浪费空间了。 UTF-8可以节省空间,在UTF-8中,字符“C”只需要8位,一些不常用的字符,比如“”需要32位。其他的字符可能使用16位或24位。...但是MySQL的“utf8”字符集与其他程序还不兼容! MySQL从4.1版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC 3629)是随后才出现的。...同年9月,他们对MySQL源代码进行了一次调整:“UTF8现在最多只支持3个字节的序列”。 utfmb4字符集 支持BMP和补充字符。 每个多字节字符最多需要四个字节。

    1.7K10

    字符集问题的初步探讨(五)

    我们知道在导出文件中,记录着导出使用的字符集id,通过查看导出文件头的第2、3个字节,我们可以找到16进制表示的字符集ID,在Windows上, 我们可以使用UltraEdit等工具打开dmp文件,查看其导出字符集...ZHT16HKSCS 364 870 AL24UTFFSS 366 871 UTF8...源数据库字符集为US7ASCII,导出文件字符集为US7ASCII或ZHS16GBK,目标数据库字符集为ZHS16GBK 在Oracle92中,我们发现对于这种情况,不论怎样处理,这个导出文件都无法正确导入到...以下是我们所做的简单测试,其中导出文件命名规则为: S-Server ,后跟Server字符集 C-client , 后跟导出操作时客户端字符集 导入时客户端字符集设置在命令行完成,限于篇幅,我们省略了部分测试过程...conventional path import done in ZHS16GBK character set and AL16UTF16 NCHAR character set export server uses UTF8

    1.3K30

    字符集问题的初步探讨(三)

    字符集的更改 数据库创建以后,如果需要修改字符集,通常需要重建数据库,通过导入导出的方式来转换。...这意味着,你只能在新字符集是旧字符集严格超集的情况下使用这种方式转换。...所谓超集是指: 当前字符集中的每一个字符在新字符集中都可以表示,并使用同样的代码点 比如很多字符集都是US7ASCII的严格超集。...' 4) COMMIT; 我们看到很多人在这个问题上遇到了惨痛的教训,使用这种方式更改字符集,如果你的value$值输入了不正确的字符集,在8i中那么你 的数据库可能会无法启动,这种情况是非常严重的...实际上当我们更新了字符集,数据库启动时会根据数据库的字符集自动的来修改控制文件的字符集,如果字符集可以识别,更新控制文 件字符集等于数据库字符集;如果字符集不可识别,那么控制文件字符集更新为US7ASCII

    87920

    字符集问题的初步探讨(一)

    通过全球支持,Oracle可以支持多种语言及字符集,得以展示数据库的强大魅力。 由于不同语言及字符集的共同存储存在设置上具有一定的复杂性,字符集一度成为普遍困扰大家的一个主要问题。...本文试图就一些常见问题进行探讨,希望可以把一些实际经验共享给大家! 1. 字符集的基本知识 如果从头说起,字符集最早的编码方案来自于与ASCII. 这也是我们最常见的编码方式。...为了容纳全世界各种语言的所有字符和符号,解决不同编码之间的兼容和转换问题,1991年元月,10多家公司共同出资,组建Unicode协会,随后Unicode编码产生了。...诚然,Unicode方案可以表示更多的字符,但是由于多位的存储,需要额外的存储空间和网络传输,所以选择最适合的数据库字符集仍然需要慎重考虑。

    76610

    URL大小写问题

    像tp这样的mvc框架一般默认的规范是根据URL里面的模块名、控制器名来定位到具体的控制器类的,从而执行控制器类的操作方法。所以url就非常重要。...那么问题来了, 如果是在windows环境下,1和2其实是一个文件,因为windows是不区分大小写的。...为了解决这个问题,tp框架提供了一种技术方案,可以使得不管你的url是大写还是小写,在linux主机上都可以定位都同一个php文件。...原理: url1:http://serverName/index.php/Home/Index/index url2: http://serverName/index.php/Home/index/index...假设用户访问url1和url2,程序分离出uel1的mvc参数为Home,Inde和index,url2的mvc参数为Home,index和index,现在我们还要兼容Windows和linux服务器

    3.5K30

    URL编码及Java发起URL请求的问题详解

    同时,URL编码还被用在html页面的表单提交上,通常HTTP协议会先将表单数据进行编码,然后再执行POST或者GET请求。 实际上我们每天都能够看到URL编码和解码,可能你没有发现而已。...**当然,作为普通用户来说,一般不会遇到这个问题,那是因为开发人员已经处理过了,但是我们就是这些开发人员,所以必须了解。 为了避免出现这种歧义,我们应该怎么做呢?...URL字符类型 我们在说解决方案之前,还是先来看看W3C是如何规定URL的格式的。...url = new URL(bufferUrl.toString()); //打开连接 URLConnection urlConnection = url.openConnection...至于参数拼装的问题,我使用了一个HashMap params = new HashMap();,有了这个东西,封装参数还不是小意思。

    4.3K20

    字符集问题的初步探讨(七)----关于字符集更改的内部操作

    我们又知道,通过ALTER DATABASE CHARACTER SET更改字符集虽然安全可靠,但是有严格的子集和超集的约束,实际上我们很少能够 用到这种方法。...实际上Oracle还存在另外一种更改字符集的方式....,把当前种子数据库的字符集更改为期望字符 集,这就是这条命令的作用....在使用这个命令时,Oracle会跳过所有子集及超集的检查,在任意字符集之间进行强制转换,所以,使用这个命令时你必须十分小心,你必须 清楚这一操作会带来的风险....我们之前讲过的内容仍然有效,你可以使用csscan扫描整个数据库,如果在转换的字符集之间确认没有严重的数据损坏,或者你可以使用有效 的方式更改,你就可以使用这种方式进行转换.

    1.4K20
    领券