我有以下用utf8编码的源代码:
为什么是以下代码:
preg_match("@^[0-9A-ZĄąĆćĘꣳÓ󯿏źŃńŚś\-\.\, ]{3,35}$@i", $valuesId)允许像płatność,nieudana proba这样的单词和表达方式,但不允许简单的表达式nieudana próba?奥斯卡的角色似乎有一个问题,preg_match不想通过。我可以继续使用像ćoba或rćoba这样的词,但是próba是行不通的。
如果与ł,ś和ć一起允许的话,为什么会出现这种情况呢?
发布于 2014-07-01 21:35:24
TL; MySQL utf8编码被错误命名。
我测试了您的代码,它与作为示例提供的所有表达式相匹配。演示。我强烈怀疑MySQL存在编码问题。
最佳选择:您确实需要强制MySQL使用utf8mb4编码,而不是utf8编码。关于这一点的一个好的、完整的解释和教程是可用的本文作者是Mathias Bynens。要点:
CHARACTER SET设置为utf8mb4,将COLLATE设置为utf8mb4_unicode_ci。utf8mb4每个字符使用额外的字节,因此您可能需要更改列和索引键的最大长度。utf8更改为utf8mb4https://stackoverflow.com/questions/24513839
复制相似问题