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

Jak mogę filtrować znaki Emoji z moich danych wejściowych, aby móc zapisać w MySQL <5.5?

Okazuje się, że już kilka razy otrzymałem odpowiedź, po prostu nie miałem odpowiedniego Google-fu, aby znaleźć istniejące pytania.

Podziękowania dla Martijn Pieters , rozwiązanie pochodzi ze świata wyrażeń regularnych, a konkretnie z tego kodu (na podstawie jego odpowiedzi na pierwszy link powyżej):

import re
try:
    # UCS-4
    highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
    # UCS-2
    highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# mytext = u'<some string containing 4-byte chars>'
mytext = highpoints.sub(u'\u25FD', mytext)

Zastępowany przeze mnie znak to WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, ale może to być cokolwiek.

Dla osób niezaznajomionych z UCS, takich jak ja, jest to system konwersji Unicode, a dana kompilacja Pythona będzie zawierać obsługę wariantu UCS-2 lub UCS-4, z których każdy ma inną górną granicę obsługi znaków.

Po dodaniu tego kodu ciągi wydają się utrzymywać w MySQL 5.1 w porządku.

Mam nadzieję, że pomoże to każdemu w tej samej sytuacji!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między normalnym ajaxem a długim odpytywaniem

  2. niezdefiniowany indeks Nazwa

  3. Skrypt PHP Database Dump - czy są jakieś problemy?

  4. MySQL - AKTUALIZUJ wiele wierszy z różnymi wartościami w jednym zapytaniu

  5. Jak importować i eksportować bazę danych MySQL