sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo filtrar los caracteres Emoji de mi entrada para poder guardar en MySQL <5.5?

Así que resulta que esto ha sido respondido varias veces, solo que no tenía el Google-fu correcto para encontrar las preguntas existentes.

Gracias a Martijn Pieters , la solución provino del mundo de las expresiones regulares, específicamente este código (basado en su respuesta al primer enlace anterior):

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)

El carácter que estoy reemplazando es el WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, pero podría ser cualquier cosa.

Para aquellos que no están familiarizados con UCS, como yo, este es un sistema para la conversión de Unicode y una compilación dada de Python incluirá soporte para la variante UCS-2 o UCS-4, cada una de las cuales tiene un límite superior diferente en soporte de caracteres.

Con la adición de este código, las cadenas parecen persistir perfectamente en MySQL 5.1.

¡Espero que esto ayude a alguien más en la misma situación!