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注入并通过数据库进行保护。
utf8mb4_0900_ai_ciutf8mb4_unicode_520_ciutf8mb4_unicode_ciutf8_unicode_ci这些数字指的是 Unicode 标准 9.0、5.20 和(无数字)4.0。
没有排序规则适合同时对所有语言进行排序。西班牙语、德语、土耳其语等都有不兼容的怪癖。上面的排序规则是可用的“最佳”通用排序规则。
utf8mb4 处理 Unicode 尚未指定的所有字符(包括切罗基语、克林贡语、楔形文字、拜占庭语等)
如果葡萄牙语是重点:
请参阅https://pt.stackoverflow.com/和 MySQL 的葡萄牙语排序规则。
研究8.0或8.0 之前的版本,看看哪种 utf8/utf8mb4 排序规则最接近“正确”地对葡萄牙语进行排序。也许utf8mb4_danish_ci或utf8mb4_de_pb_0900_ai_ci将是最好的。
(否则请选择上面列出的“选择”。)