sql >> Databasteknik >  >> RDS >> Mysql

Hur filtrerar (eller ersätter) unicode-tecken som skulle ta mer än 3 byte i UTF-8?

Unicode-tecken i intervallen \u0000-\uD7FF och \uE000-\uFFFF kommer att ha 3 byte (eller mindre) kodningar i UTF8. \uD800-\uDFFF-intervallet är för multibyte UTF16. Jag kan inte python, men du bör kunna ställa in ett reguljärt uttryck för att matcha utanför dessa intervall.

pattern = re.compile("[\uD800-\uDFFF].", re.UNICODE)
pattern = re.compile("[^\u0000-\uFFFF]", re.UNICODE)

Redigera lägger till Python från Denilson Sás skript i frågekroppen:

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)    


  1. Hur väljer jag (eller kan jag) DISTINCT på flera kolumner?

  2. Returnera endast numeriska värden i MariaDB

  3. Phalcon prestandarelaterade frågor

  4. MySQL57-tjänsten på lokal dator startade och stoppade sedan