MySQL 對特殊字元的處理:一個悖論解釋
在MySQL 中,執行涉及特殊字元的查詢,如'Å' 、'Ä'、和「Ö」常引發有關結果一致性的問題。例如,使用「Harligt」和「Härligt」進行查詢會產生相同的結果,讓使用者感到困惑。
這種現象歸因於 MySQL 的預設排序規則設置,特別是“utf8_general_ci”和“utf8_unicode_ci”。這些排序規則透過將某些 unicode 字元(包括斯堪的納維亞字母)等同於其英語等效字元(例如“ä = A”)來規範化它們。這種規範化簡化了比較操作和搜索,但在某些情況下可能會不方便。
要解決此問題,請考慮以下選項:
select * from topics where name='Harligt' COLLATE utf8_bin;
值得注意的是,如果沒有特殊字元的規範化,MySQL 中不區分大小寫的 LIKE 操作將無法執行。不過,相關討論可以在這裡找到:
以上是為什麼「Harligt」和「Härligt」在 MySQL 中回傳相同的結果?看看排序規則和字元規範化。的詳細內容。更多資訊請關注PHP中文網其他相關文章!