Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso filtrar caracteres Emoji da minha entrada para que eu possa salvar no MySQL <5.5?


Acontece que isso foi respondido algumas vezes, eu só não tinha o Google-fu certo para encontrar as perguntas existentes.

Obrigado a Martijn Pieters , a solução veio do mundo das expressões regulares, especificamente este código (com base em sua resposta ao primeiro link acima):
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)

O caractere que estou substituindo é o WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, mas pode ser qualquer coisa.

Para aqueles que não estão familiarizados com o UCS, como eu, este é um sistema para conversão Unicode e uma determinada compilação do Python incluirá suporte para a variante UCS-2 ou UCS-4, cada uma com um limite superior diferente no suporte a caracteres.

Com a adição deste código, as strings parecem persistir no MySQL 5.1 muito bem.

Espero que ajude mais alguém na mesma situação!