我有一个使用西里尔文(马其顿)字母的应用程序。我有一个包含所有字母的字母表菜单(手动键入一个数组,我从助手中调用它),该菜单链接到第一个字符是该字母的项目。因此,似乎“К”和“Ќ”(也称为“Г”和“Ѓ”)列出了相同的项目,就好像它们使用的是同一字母一样。在开发中效果很好,不确定为什么要在生产中使用。我在生产数据库上设置了UTF-8编码。
这是产品日志。它没有获得相同的角色。
App 18197 stderr: Started GET "/letterfilter?title=%D0%8C" for IP at2015-07-30 12:03:46 -0400
App 18197 stderr: Processing by PostsController#letterfilter as HTML
App 18197 stderr: Parameters: {"title"=>"Ќ"}
App 18197 stderr: Rendered posts/letterfilter.html.haml within layouts/application (4.3ms)
App 18197 stderr: Rendered posts/_search.html.haml (0.8ms)
App 18197 stderr: Rendered shared/_header.html.haml (9.6ms)
App 18197 stderr: Rendered shared/_footer.html.haml (0.2ms)
App 18197 stderr: Completed 200 OK in 18ms (Views: 16.6ms | ActiveRecord: 0.2ms)
App 18197 stderr: Started GET "/letterfilter?title=%D0%9A" for IP at 2015-07-30 12:03:51 -0400
App 18197 stderr: Processing by PostsController#letterfilter as HTML
App 18197 stderr: Parameters: {"title"=>"К"}
App 18197 stderr: Rendered posts/letterfilter.html.haml within layouts/application (4.9ms)
App 18197 stderr: Rendered posts/_search.html.haml (0.7ms)
App 18197 stderr: Rendered shared/_header.html.haml (7.7ms)
App 18197 stderr: Rendered shared/_footer.html.haml (0.2ms)
App 18197 stderr: Completed 200 OK in 17ms (Views: 14.2ms | ActiveRecord: 0.9ms)
是什么导致此问题?我应该将数据库编码更新为utf8mb4吗?
欢迎任何帮助。谢谢。
最佳答案
Ќ
是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也是如此。
回到您的问题...您的意思是“没有得到相同的角色”?
关于mysql - Rails/MySQL奇怪的UTF-8编码问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31741660/