MySQL - 使用波兰语字符进行不区分重音的搜索 - UTF8

Fla*_*der 3 mysql collation utf-8

我找到了很多关于排序规则和重音不敏感搜索的答案,阅读了大约 1000 个关于这个问题的帖子和文章,但没有找到答案。

\n

有谁知道如何强制 MySQL 对所有波兰语字符不区分重音进行搜索?也许有人得到了一个已编译的整理文件(Debian)?

\n

请注意:

\n
    \n
  • 将排序规则设置为utf8_general_ci没有帮助。它不能\xc5\x81正确支持。但它确实破坏了搜索顺序。
  • \n
  • 将排序规则设置为utf8_unicode_ci没有帮助。与上面相同。
  • \n
  • 无法编辑排序规则文件,因为它是多字节编码。并且必须编译多字节字符集。
  • \n
  • 将所有不支持的字母替换为支持的字母并不是解决方案。
  • \n
\n

我真的不明白为什么 MySQL 工作人员不将此视为错误。很明显,确实如此,而且已经存在很多年了。从 4.xx 开始,他们的\xc5\x9a字母正确了……那为什么不呢\xc5\x81?!

\n

我找到了一些对此 MySQL 功能的参考,但没有有关如何使用它的信息。我不太明白那里写的是什么以及它是否可以帮助我。

\n

测试:

\n
mysql> show full columns from test;\n+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+\n| Field | Type         | Collation      | Null | Key | Default | Extra | Privileges                      | Comment |\n+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+\n| str   | varchar(255) | utf8_polish_ci | YES  |     | NULL    |       | select,insert,update,references |         |\n+-------+--------------+----------------+------+-----+---------+-------+---------------------------------+---------+\n\nmysql> insert into test values(\'\xc5\x81om\xc5\xbca\');\n
Run Code Online (Sandbox Code Playgroud)\n

...

\n
mysql> select str from test where str like \'%\xc5\x81om\xc5\xbca%\'\\G\n*************************** 1. row ***************************\nstr: \xc5\x81om\xc5\xbca\n\nmysql> select str from test where str like \'%\xc5\x81omza%\'\\G\nEmpty set (0.00 sec)\n\n--\n\nmysql> select str from test where str like \'%\xc5\x81omza%\' collate utf8_general_ci\\G\n*************************** 1. row ***************************\nstr: \xc5\x81om\xc5\xbca\n\nmysql> select str from test where str like \'%Lomza%\' collate utf8_general_ci\\G\nEmpty set (0.00 sec)\n\n--\n\nmysql> select str from test where str like \'%\xc5\x81omza%\' collate utf8_unicode_ci\\G\n*************************** 1. row ***************************\nstr: \xc5\x81om\xc5\xbca\n\nmysql> select str from test where str like \'%Lomza%\' collate utf8_unicode_ci\\G\nEmpty set (0.00 sec)\n
Run Code Online (Sandbox Code Playgroud)\n

小智 5

我刚刚开始使用 MySql,“波兰语”问题的答案是整理utf8_unicode_520_ci(或utf8mb4_unicode_520_ci)其中l=\xc5\x82=L=\xc5\x81- 对于其他口音(不仅仅是波兰语)也是如此。

\n\n

没有字符转换,没有ascii列,什么都没有\xe2\x80\xa6经过多年在Sqlite中搜索\xc5\x82/\xc5\x81解决方案。

\n