2016-09-15 37 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。