2016-09-15 38 views
-2

我已经使用REGEXP试图正则表达式:MySQL的多字节字符

'^[A-Za-z0-9ÿ!#$%&*[email protected]ˆ^_¡\-¦¨¯´¸¿˜‘’‚“”„\'‹›¢£¤¥€±«»×÷§©¬®°µ¶·…†‡•‰¼½¾¹²³ªÇºß`]+$' 

但它也接受这是不存在像ϢϗγΔ RE的字符。

任何人都可以帮忙吗?

+2

[好像对我有用](http://rubular.com/r/djVTNqEe1n)。 –

+0

我用[regex101](https://regex101.com/)测试过它,它工作正常。 – Blobonat

+1

来自“MySQL”我想也许你需要给我们一些MySQL细节,比如你的SQL排序规则和连接字符集,以及这个正则表达式是如何与你的SQL查询进行交互的? – Martin

回答

1

MySQL中的REGEXP只处理字节,而不是多字节字符。

另一方面,您的字符集似乎完全在latin1字符集中。

因此,我建议您将字符串转换为latin1,然后使用REGEXP进行测试(以避免少数字符丢失),然后转换回来,看看您是否比开始使用更多?。问号表示,由于缺少针对某些字符的latin1编码,因此latin1转换 latin1失败。

请说明您查询的意图;可能有一种更简单的方法来处理它。

+0

谢谢瑞克。你的回答给了我一个解决方案:) – Meghana

1

这已被修复,它的排序问题我已经将排序规则从utf8_unicode_ci更改为utf8_general_ci。