MySQL 中的 Unicode 字符集:了解 'ä' 异常
MySQL 对字符 'ä'、'ö' 和 的处理搜索时将“ü”替换为“AAO”可能会令人困惑。要理解这种行为,我们必须深入研究 Unicode 字符集及其排序规则的世界。
在非特定于语言的 Unicode 排序规则(例如 utf8_general_ci 和 utf8_unicode_ci)中,某些 Unicode 字符被视为等效字符。具体来说,字符 'Ä'、'Ö' 和 'Ü' 被标准化为其基本等效的 'A'、'O' 和 'U'。进行此标准化是为了确保在比较和搜索中相同地对待具有相似语音发音的字符。
要禁用此标准化并对确切的字符串“Härligt”执行区分大小写的搜索,您可以使用 utf8_bin collation:
select * from topics where name='Harligt' COLLATE utf8_bin;
或者,您可以仅对查询使用不同的排序规则,例如 latin1_bin:
select * from topics where name ='Härligt' COLLATE latin1_bin;
但是,如果您需要不区分大小写的搜索而不使用 Ä =转换时,您需要使用不同的方法,因为没有 MySQL 排序规则可以提供不区分大小写的比较,而无需隐式变音转换。
以上是为什么在 MySQL 搜索中\'Ä\' 变成了\'AAO\'?的详细内容。更多信息请关注PHP中文网其他相关文章!