Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak filtrować (lub zastępować) znaki Unicode, które w UTF-8 zajmowałyby więcej niż 3 bajty?

Znaki Unicode z zakresów \u0000-\uD7FF i \uE000-\uFFFF będą miały kodowanie 3 bajtowe (lub mniej) w UTF8. Zakres \uD800-\uDFFF dotyczy wielobajtowego UTF16. Nie znam pythona, ale powinieneś być w stanie ustawić wyrażenie regularne, aby pasowało poza tymi zakresami.

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

Edytuj dodawanie Pythona ze skryptu Denilsona Sá w treści pytania:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie danych z bazy danych JDBC do Jtable

  2. Dlaczego ten kod SQL daje błąd 1066 (Nieunikalna tabela/alias:„użytkownik”)?

  3. Błąd krytyczny:przeczytaj sekcję Bezpieczeństwo w podręczniku, aby dowiedzieć się, jak uruchomić mysqld jako root

  4. Samouczek MySQL – Zrozumienie sekund kryjących się za wartością nadrzędną

  5. Projekt bazy danych zarządzania zapasami