MySQL 排序规则:utf8mb4_unicode_ci 与“utf8mb4 - 默认排序规则”

2024-04-02

请帮助我理解 MySQL Workbench 中列出的排序规则之间的差异:

utf8mb4_unicode_ci vs utf8mb4 - default collation

附注大家都推荐使用utf8mb4_unicode_ci。如果这如此受欢迎,为什么它不是默认的?它与默认值有什么不同?

我使用 MySQL 5.7.21。


utf8mb4_default??你在哪里看到这个?

utf8mb4 的默认排序规则(MySQL 8.0 之前)是utf8mb4_general_ci。这一次只检查一个字节,所以ss不被视为等于ß。 utf8mb4 的大多数其他排序规则确实认为它们是相等的。

一般使用的“更好”排序规则列表中的下一个(与特定于西班牙语等相反)是utf8mb4_unicode_ci。这与几年前编写的 Unicode 排序算法 4.0 版相匹配。

然后来了utf8mb4_unicode_520_ci(Unicode 5.20),它可以“正确”处理更多事情。

当你到MySQL 8.0时,将会有9.0版本,utf8mb4_0900_ai_ci.

有关差异的详细信息,请参见http://mysql.rjweb.org/utf8_collat​​ions.html http://mysql.rjweb.org/utf8_collations.html。 (注意:对于该页面上提供的信息,“utf8”与“utf8mb4”的工作方式相同。)首先要注意的是:

utf8_general_ci         A=a=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą    Aa  ae          az
utf8_unicode_ci       A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą  Aa  ae          az            Æ=æ
utf8_unicode_520_ci   A=a=ª=À=Á=Â=Ã=Ä=Å=à=á=â=ã=ä=å=Ā=ā=Ą=ą  Aa  ae=Æ=æ      az

这 3 行指出了 3 种不同的治疗方法Æ and æ.

  • 这两个连字被同等对待(“不区分大小写”)。
  • general不会将其排序在其他 A 附近。 (在下面很远的地方,我们看到它们按照Z.)
  • unicode将它们排序在所有 A 之后、B 之前,就好像它们是一个单独的“字母”一样。
  • unicode_520将它们视为等于字母对ae.

对于 5.7,并且没有任何特定的语言要求,我会使用utf8mb4_unicode_520_ci.

回到你的“为什么”问题。更改默认设置可能会带来对现有安装的损害大于其帮助的风险。所以,我猜设计师是保守的。另一方面,8.0 有很多重大变化,因此不愿意改变的情况较少。因此,迁移到 utf8mb4_0900_ai_ci。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 排序规则:utf8mb4_unicode_ci 与“utf8mb4 - 默认排序规则” 的相关文章

  • 未找到列:1054 未知列 laravel

    所以我尝试用 laravel 制作一个表单 但除了新版本之外 他们删除了表单 但我可以让它运行 所以这里是 Route post register function user new User user gt u n Input get u
  • 如何抑制输出并检查命令是否成功?

    我正在尝试编写一个 powershell 脚本来测试 MySQL 登录是否成功 检查是否发生错误 我还想抑制命令的所有输出 成功或不成功 这些是我尝试过的事情 mysql u root password mypass e show data
  • MySqlBulkLoader 说明

    你能告诉我什么吗MySqlBulkLoader的用途 在哪里以及如何使用它 一些例子也将不胜感激 请 MySQLBulkLoader是MySQL Connector Net类中的一个类 包装了MySQL语句LOAD DATA INFILE
  • 使用 KMS 的 AWS RDS 加密是否会影响性能?

    Amazon states https aws amazon com about aws whats new 2015 01 06 amazon rds encryption with kms mysql postgresql that 加
  • 资源 ID #4 PHP MYSQL

    result mysql query SELECT indvsum sum1 indvsum sum2 FROM SELECT SUM Cash AS sum1 SUM Bank AS sum2 FROM players indvsum e
  • PHP 内部的连接分解

    我看到一篇关于连接分解的文章 场景 1 不好 Select from tag Join tag post ON tag post tag id tag id Join post ON tag post post id post id Whe
  • 在 PHP MySQL 中使用 jQuery AJAX 提交表单而无需重新加载

    我有一个基本的注册 登录页面 它使用 php 将数据提交到 SQL 数据库 但是 我希望页面在 jQuery AJAX 的帮助下不要在提交时重定向 无论成功与否 这是我目前所拥有的 但不起作用 它不显示任何错误消息 HTML 注册 html
  • 使用java将数据插入mySQL表

    I have a predefined table in a mySQL database 我正在努力将从用户输入的数据保存到数据库中 但我似乎无法将任何数据保存在数据库中 使用以下代码 我尝试更新数据库的第一行 ID 1 到 OTHER
  • 使用一条语句在 MySQL 中添加多列

    我试图将多个列添加到 phpMyAdmin 中的现有表中 但我不断收到相同的错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法 我在写信 ALTER TABLE WeatherCente
  • 从 MySQL 转储中删除 DEFINER 子句

    我有一个数据库的 MySQL 转储 其中有 DEFINER 子句 如下所示 DEFINER root localhost 也就是说 这些 DEFINER 子句位于我的 CREATE VIEW 和 CREATE PROCEDURE 语句中 有
  • 安装MySQLdb(对于python)作为非压缩的egg

    安装说明是 python setup py build sudo python setup py install or su first 这给了我一个 egg 文件 如何告诉安装程序将文件转储为普通的未压缩库 Thanks 好吧 我不想回答
  • 使用Python mysql.connector远程连接MySQL

    以下代码 在同一 LAN 内与 mysql 服务器不同的机器上运行 使用 Python3 和 mysql connector 本地连接到 MySQL 数据库 import mysql connector cnx mysql connecto
  • 如何通过csv文件仅更新sql表的一列

    我有一个 csv 文件包含一些数据 在我的 Sql 数据库中 我有一个具有多个列名的表 现在我只想通过 csv 文件更新一列 谢谢 你可以这样尝试 Import the csv file to a temp table Update you
  • MongoDB 聚合查询与 MySQL SELECT field1 FROM 表

    我对 MongoDB 完全陌生 想要比较 NoSQL 数据模型相对于关系数据库对应部分的查询性能 我将其写入 MongoDB shell Make 10 businesses Each business has 10 locations E
  • SQL Select 使某个值仅出现一次

    对于那些一直在这个 Twitter 克隆上帮助我的人 谢谢你们 在您的帮助下 我已经成功地完成了大部分工作 现在终于完成了关注者功能的最后一步 现在 我有一个包含以下字段的数据集 用户名 推文 日期 数据示例可能如下所示 Username
  • 如何在mysql工作台中打开多个模型/数据库

    我有两个型号 1 Server Model conneted to remote database which is stored on server 2 Local Host connected to my pc database is
  • MySQL如何获取可能重叠日期的开始/结束日期之和

    我有一个开始 结束日期表 我想按 id 对其进行分组并对每个 id 的总时间进行求和 例如 fk id start end 3 2014 03 21 10 02 2014 05 01 08 05 3 2014 06 05 05 00 201
  • MySQL 中复制一条记录

    我有一个表 我想复制表中的特定行 我知道这不是最好的方法 但我们正在寻找快速解决方案 这比我最初想象的要难 我需要做的就是将整个记录复制到 MySql 中自动增量表中的新记录 而不需要指定每个字段 这是因为该表将来可能会发生变化 并且可能会
  • PHP md5() 给出与 MySQL md5 不同的输出

    我正在尝试设置登录系统 但无法解决一个问题 PHP 通过 md5 给了我另一个输出 比MySQL 例如 在 PHP 中 password md5 brickmasterj return password 返回 3aa7b18f304e2e2
  • 将文件保存为 MYSQL 数据库中的 blob 或文件路径

    我知道这些问题是常见问题之一 但我需要您针对具体案例提供帮助 我正在开发一个应用程序 其中一些用户可以添加订单 一些用户可以执行这些订单 这些订单非常具体 因此只有有限数量的用户可以添加它们 然后 为每个订单生成三个文档 每个文档的大小不超

随机推荐

  • 在任务之间复制 contextvars.Context

    我有一个程序 ASGI 服务器 其结构大致如下 import asyncio import contextvars ctxvar contextvars ContextVar ctx async def lifepsan ctxvar se
  • 为什么这个break语句break不起作用?

    我有以下代码 public void post String message final String mess message new Thread public void run while true try if status equ
  • Terraform 应用抛出错误“等待插件启动时超时”

    我在 terraform 应用期间遇到以下错误 Error timeout while waiting for plugin to start Debug LOG 2020 07 09T13 15 46 551 0400 DEBUG plu
  • kendo ui 取消树视图放置

    我有一个 TreeView 一旦用户将项目放到所需的位置 它会显示一个对话框并要求确认 如果用户选择取消 我还如何取消项目的放置 以便它返回到其原始位置 我当前的代码如下但不起作用 var newDiv document createEle
  • 在 Promise 链上使用 setTimeout

    在这里 我试图围绕承诺进行思考 在第一个请求中 我获取一组链接 在下一个请求中 我获取第一个链接的内容 但是我想在返回下一个承诺对象之前进行延迟 所以我使用setTimeout就可以了 但它给了我以下 JSON 错误 without set
  • 安装 Visual Studio 2012 Release Preview 后出现错误“LINK:致命错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏”

    我已经安装了 Visual Studio 2012 Release Preview 看起来没问题 但现在当我尝试使用 Visual Studio 2010 编译 C 项目时 收到以下错误消息 链接 致命错误 LNK1123 转换为 COFF
  • C 中的科学记数法对于整数常量安全吗?

    一段时间以来 我一直使用科学计数法来表示常数中 10 的大幂 这样我就不必计算零 例如 define DELAY USEC 1e6 一位同事指出这并不安全 因为它不是整数并且不能保证始终等于 1000000exactly 文档似乎证实了这一
  • FParsec 的缩进、表达式、语句和 StackOverflowException - 错误

    我用 FParsec 测试缩进 根据这个实现 https github com stephan tolksdorf fparsec wiki Parsing indentation based syntax with FParsec 但是当
  • 比较两个字符串或对象并获取差异

    我想在我的网站上实现一种版本历史记录 并且我需要一种比较字符串或对象键的方法 例如 原始字符串 对象键 更快的棕色狐狸 修改后的字符串 对象键 The Quick Brown Fox 跳过了那只懒兔子 修订 添加跳过了那只懒兔子已删除er
  • Rails form_tag 表单编写 - 带非活动记录模型

    我是 Rails 的新手 我正在编写一个 couchrest rails 应用程序 因此我没有为此模型使用 activerecord 我刚刚发现这意味着 form for model 行不通的 我正在尝试弄清楚如何使用 form tag 但
  • Win32:如何使用CreateWindowExW()函数创建ListBox控件?

    我浏览过多个站点 文档和教程 他们都说相同 即任何控件都只不过是 Win32 API 中的一个窗口 因此可以使用CreateWindowExW 函数来创建一个ListBox主应用程序窗口上的控件 窗口 虽然我明白所有控件都是具有不同窗口的概
  • 将向量转换为逻辑矩阵

    是否有一个原生 R 函数可以接受输入向量并返回相应的二进制矩阵 其中该矩阵的列数与输入向量中的唯一值相同 例如 给定x lt 1 3 我想返回以下矩阵 1 2 3 1 1 0 0 2 0 1 0 3 0 0 1 功能contrasts接近了
  • Python解包线程安全吗?

    是一个类似的操作x y self mytuplePython 中的原子 或者可以self mytuple在分配期间被另一个线程修改 导致 x 引用 self mytuple 的第一个版本 而 y 引用第二个版本 我正在使用Python 3
  • Xamarin 部署不适用于 Android

    我已经设置了一个newXamarin Forms 项目 我想构建它并将其部署到模拟器或 Android 设备 但它不起作用 在Visual Studio的Output窗口中 显示以下错误 应用程序无法启动 确保应用程序具有 已安装到目标设备
  • Maven 资源插件复制文件

    我目前有一些 Maven 项目 当我安装项目时 我需要将所有文件从 conf 文件夹复制到目标文件夹 Project src conf lt FROM HERE gt lib target lt TO HERE gt 我在 pom xml
  • console.log() 已定义但未登录 IE - 空控制台

    Internet Explorer 8 和 9 中页面上的 Javascript打开开发者工具达到console log 其定义为 but 实际日志中没有出现任何内容 尝试过的事情 仔细检查alert s that console被定义并且
  • 如何使从天蓝色广告收到的 Jwt 令牌无效

    我有 2 个应用程序 一个是 Spring Boot 另一个是 Angular 目前 我已将我的应用程序与 azure ad 集成 从而通过它进行身份验证 现在的问题是 当用户从前端应用程序注销时 如果令牌未过期 如何使Azure AD提供
  • 卡夫卡保留政策

    假设我有一个多代理 在同一主机上运行 Kafka 设置 其中包含 3 个代理和 50 个主题 每个主题配置为具有 7 个分区和 3 的复制因子 我有 50GB 内存可用于 kafka 并确保 Kafka 日志永远不会超过此内存量 因此我想配
  • 在子控制器中查看控制器框架大小

    我正在实施 UIViewcontroller 遏制 在下面的示例中 我在根控制器中设置了子控制器的帧大小 子视图显示为我设置的大小 但是当我检查它在 container1 内的边界时 它报告的大小与我设置的大小不同 根控制器 容器 void
  • MySQL 排序规则:utf8mb4_unicode_ci 与“utf8mb4 - 默认排序规则”

    请帮助我理解 MySQL Workbench 中列出的排序规则之间的差异 utf8mb4 unicode ci vs utf8mb4 default collation 附注大家都推荐使用utf8mb4 unicode ci 如果这如此受欢