Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso filtrare i caratteri Emoji dal mio input in modo da poter salvare in MySQL <5.5?

Quindi è venuto fuori che questo è stato risposto alcune volte, semplicemente non avevo il giusto Google-fu per trovare le domande esistenti.

Grazie a Martijn Pieters , la soluzione è venuta dal mondo delle espressioni regolari, in particolare da questo codice (basato sulla sua risposta al primo link sopra):

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)

Il carattere che sto sostituendo è il WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, ma potrebbe essere qualsiasi cosa.

Per chi non ha familiarità con UCS, come me, questo è un sistema per la conversione Unicode e una data build di Python includerà il supporto per la variante UCS-2 o UCS-4, ognuna delle quali ha un limite superiore diverso sul supporto dei caratteri.

Con l'aggiunta di questo codice, le stringhe sembrano persistere bene in MySQL 5.1.

Spero che questo aiuti qualcun altro nella stessa situazione!