我有一个使用西里尔语(马其顿语)字母的应用程序。我有一个包含所有字母的字母菜单(手动输入为我从助手调用的数组),它链接到第一个字符是该字母的项目。因此,似乎“К”和“Ќ”(也是“Г”和“Ѓ”)列出了相同的项目,就像它们使用相同的字母一样。在开发中工作得很好,不确定它为什么在生产中这样做。我在生产数据库上设置了UTF-8编码。
这是生产日志。它没有得到相同的角色。
ID name username
1 A A100
2 B B200
3 C C300
4 user user400
可能导致此问题的原因是什么?我应该将我的数据库编码更新为utf8mb4吗?
欢迎任何帮助。感谢。
答案 0 :(得分:0)
Ќ
在utf8或utf8mb4中为十六进制D08C
。西里尔文完全由CHARACTER SET
涵盖。 К
为D09A
,如?title=
mysql> SELECT 'К' = 'Ќ' COLLATE utf8_bin AS bin,
'К' = 'Ќ' COLLATE utf8_general_ci AS general,
'К' = 'Ќ' COLLATE utf8_unicode_ci AS unicode;
+-----+---------+---------+
| bin | general | unicode |
+-----+---------+---------+
| 0 | 1 | 0 |
+-----+---------+---------+
mysql> SELECT 'Г' = 'Ѓ' COLLATE utf8_bin AS bin,
'Г' = 'Ѓ' COLLATE utf8_general_ci AS general,
'Г' = 'Ѓ' COLLATE utf8_unicode_ci AS unicode;
+-----+---------+---------+
| bin | general | unicode |
+-----+---------+---------+
| 0 | 1 | 0 |
+-----+---------+---------+
位模式不同,因此utf8_bin整理不相等。但通常情况下,一般情况相同,unicode也是如此。
回到你的问题......你是什么意思“它没有得到相同的角色”?