sql >> Databáze >  >> RDS >> Mysql

Jak filtrovat (nebo nahradit) znaky unicode, které by v UTF-8 zabraly více než 3 bajty?

Znaky Unicode v rozsahu \u0000-\uD7FF a \uE000-\uFFFF budou mít 3bajtové (nebo méně) kódování v UTF8. Rozsah \uD800-\uFFFF je pro vícebajtové UTF16. Python neznám, ale měli byste být schopni nastavit regulární výraz tak, aby odpovídal mimo tyto rozsahy.

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

Upravte přidání Pythonu ze skriptu Denilsona Sá v těle otázky:

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


  1. kombinování dotazů mysql AND OR v Codeigniter

  2. výběr řádků s id z jiné tabulky

  3. Změna hesla pomocí Oracle SQL Developer

  4. Připojení podle předchozího ekvivalentu pro MySQL