为组合的拉丁语/西里尔语语言数据选择字符集和排序规则

choosing character sets and collations for combined Latin / Cyrillic language data

对于多语言应用程序,我应该如何在 phpmyadmin 中配置 MySQL 数据库以在同一 table 中存储拉丁语和西里尔语数据集?

创建数据库时,您可以选择默认...

  • 用于定义字符存储方式的字符集。
  • 用于定义字符排序和搜索方式的排序规则。

你给出这样的命令:

 CREATE DATABASE mydata CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci

phpMyAdmin 有一个对话框提示您输入这些值。

(MySQL 喜欢通过将其服务器范围默认设置为 Latin1 字符集和瑞典语排序规则来吹嘘其瑞典血统。所以请注意,您可能必须覆盖默认设置。如果我是瑞典人,我也会吹嘘.)

然后,如果您愿意,您可以为每个 table 甚至 table 的每一列覆盖这些选择。

字符集是这些选择中最重要的,因为您放入 table 中的数据将以该字符集表示。如果你的应用程序是一个新的开始,你应该选择字符集 utf8mb4。无论如何,你应该选择一个 Unicode 字符集,比如 utf8。 Unicode 能够用一个字符集表示几乎所有已知的自然语言,包括英语、西班牙语、西里尔字母、马扎尔语、希伯来语、土耳其语、希腊语、阿拉伯语和东方语言。有关各种字符集的说明,请参见此处。

https://dev.mysql.com/doc/refman/5.6/en/charset-unicode-sets.html

排序规则控制文本的排序和搜索方式。 MySQL 提供了许多不区分大小写的排序规则。这对于自然语言文本来说真的很酷,因为它可以让搜索变得更好。

您应该选择 utf8mb4_unicode_ci 作为新的开始,或者选择 utf8_unicode_ci。除非您要处理非常具体的语言细节,否则这应该对您很有帮助。 (例如,西班牙语将 Ñ 作为单独的字母处理,而不是 N 的大小写变体。要正确处理,您需要使用utf8mb4_spanish_ci 或 utf8_spanish_ci 排序规则。)