MySQL对重音字符过于聪明

我想,通常人们都希望让他们的程序像这样,但在我的情况下,这与我想要的完全相反.

不知何故,我的MySQL数据库能够读取不同的重音字符相同.例如,shī,shí,shǐ,shì和shi都是相同的东西.当我搜索一个时,我也会得到其他人. Proofpic:

这不是我想要的,因为对我而言,这些价值观是非常不同的.基本上,pic上的查询必须返回空行,因为该表中没有一个带有shi(没有重音)的条目.

我的表类型是InnoDB,整理是utf8_general_ci.

最佳答案 使用utf8_bin校对.您不必更改整个列的排序规则,您可以在每个查询的基础上使用它

WHERE `pinyin` = 'shi' COLLATE utf8_bin

您还可以尝试使用可能更适合您的不同排序规则(utf8_bin适用于binery级别,因此即使两个具有不同字节代码的unicode字符相同,它们也会看到它们不同).

点赞