Você está perdendo o ponto sobre
CHARACTER SET
e COLLATION
. Um CHARACTER SET
é uma coleção de personagens diferentes. Um COLLATION
diz se deve tratar os caracteres como iguais -- pense em A
e a
-- caracteres diferentes, mas tratados para ORDER BY
e WHERE =
, etc como sendo o mesmo. mysql> SELECT 'K'='K' COLLATE utf8_unicode_ci;
+-----------------------------------+
| 'K'='K' COLLATE utf8_unicode_ci |
+-----------------------------------+
| 1 |
+-----------------------------------+
Portanto, em utf8_unicode_ci (ou utf8mb4_unicode_ci), esses dois caracteres são considerados "iguais".
"Igual" é o teste para
UNIQUE
chaves. Defina o
COLLATION
para a coluna para o que fizer sentido para você. - utf8mb4_unicode_ci para boas comparações da 'vida real', aparentemente incluindo esta. K=k=Ķ=ķ
- utf8mb4_unicode_ci para comparações mais simples. Em particular, nenhuma combinação de 2 caracteres corresponde a codificações de 1 caractere. A dobragem da caixa e a remoção de acentos ocorrem. K=k=Ķ=ķ
- utf8mb4_bin verifica cegamente os bits. Sem dobra de caixa, etc. K k Ķ ķ são todos desiguais.
utf8mb4_latvian_ci é um pouco diferente:K=k mas não igual a Ķ=ķ . Existem outros agrupamentos especializados para outros idiomas (principalmente da Europa Ocidental).
Seu
K
é chamado de "LETRA MAIÚSCULA LATINA K", então é bastante razoável que seja igual ao latim K
.