Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je filtrer les caractères Emoji de mon entrée afin de pouvoir enregistrer dans MySQL <5.5 ?

Il s'avère donc que cela a été répondu plusieurs fois, je n'avais tout simplement pas le bon Google-fu pour trouver les questions existantes.

Merci à Martijn Pieters , la solution est venue du monde des expressions régulières, plus précisément de ce code (basé sur sa réponse au premier lien ci-dessus) :

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)

Le caractère que je remplace est le WHITE MEDIUM SMALL SQUARE (U+25FD) , pour votre information, mais cela pourrait être n'importe quoi.

Pour ceux qui ne connaissent pas UCS, comme moi, il s'agit d'un système de conversion Unicode et une version donnée de Python inclura la prise en charge de la variante UCS-2 ou UCS-4, chacune ayant une limite supérieure différente pour la prise en charge des caractères. /P>

Avec l'ajout de ce code, les chaînes semblent bien persister dans MySQL 5.1.

J'espère que cela aidera quelqu'un d'autre dans la même situation !