我应该设置什么 COLLATE 才能使用所有可能的语言?

min*_*set 4 mysql sql database collation

我有一个名为 的专栏username,我希望用户能够插入日语、罗马语、阿拉伯语、韩语以及所有可能的文本,包括特殊字符 [ https://en.wiktionary.org/wiki/Index:All_languages ]COLLATE ,我应该在我的数据库和表上设置什么?

我正在使用utf_general_ci,我是新手,所以我不知道这是否最适合COLLATE我的需求。我需要选择正确的COLLATE以避免sql错误,因为我不会使用preg_replace或替换特殊字符的函数,我只会使用prepared statement以避免SLQ注入并通过数据库进行保护。

Ric*_*mes 5

  • 第一选择(MySQL 8.0): utf8mb4_0900_ai_ci
  • 第二选择(从 5.6 开始): utf8mb4_unicode_520_ci
  • 第三选择(5.5+): utf8mb4_unicode_ci
  • 5.5之前,不能处理所有中文,也不能处理Emoji: utf8_unicode_ci

这些数字指的是 Unicode 标准 9.0、5.20 和(无数字)4.0。

没有排序规则适合同时对所有语言进行排序。西班牙语、德语、土耳其语等都有不兼容的怪癖。上面的排序规则是可用的“最佳”通用排序规则。

utf8mb4 处理 Unicode 尚未指定的所有字符(包括切罗基语、克林贡语、楔形文字、拜占庭语等)

如果葡萄牙语是重点:

请参阅https://pt.stackoverflow.com/MySQL 的葡萄牙语排序规则

研究8.08.0 之前的版本,看看哪种 utf8/utf8mb4 排序规则最接近“正确”地对葡萄牙语进行排序。也许utf8mb4_danish_ciutf8mb4_de_pb_0900_ai_ci将是最好的。

(否则请选择上面列出的“选择”。)