【发布时间】:2011-03-31 04:45:32
【问题描述】:
我注意到使用 MySQL 的“非英语”(波兰语)字符存在问题。
query "select 'abcde'='ąbćdę'" 返回 "1" 且字符串不等于 ...
你能帮帮我吗? :) 谢谢!!!
【问题讨论】:
我注意到使用 MySQL 的“非英语”(波兰语)字符存在问题。
query "select 'abcde'='ąbćdę'" 返回 "1" 且字符串不等于 ...
你能帮帮我吗? :) 谢谢!!!
【问题讨论】:
对于 utf8_general_ci,它们是相等的(除了 ł,它不被 MySQL 视为错误),从 5.6 开始,您还可以使用正确处理所有波兰字符的 utf8_unicode_520_ci。使用 utf8_polish_ci 区分重音字符和非重音字符。
select 'abcde'='ąbćdę' COLLATE utf8_polish_ci
>> 0
'不是错误'的演示
select 'abcde'='ąbćdę' COLLATE utf8_general_ci
>> 1
select 'abcdel'='ąbćdęł' COLLATE utf8_general_ci
>> 0
在此处查看错误报告:http://bugs.mysql.com/bug.php?id=9604
【讨论】:
ş 和 s 被视为相同的值。我已经尝试了许多不同的排序规则,但它们都不起作用。任何想法? here is my question
你可以在 MYSQL 查询中将 Ł 替换为 L,将 ł 替换为 l,如下所示:
SELECT REPLACE(REPLACE('abcdel', 'Ł', 'L'), 'ł', 'l') = REPLACE(REPLACE('ąbćdęł', 'Ł', 'L'), 'ł', 'l') COLLATE utf8_general_ci
>> 1
从现在开始,所有变音字母都等于它们的非变音字母。
【讨论】: