sql >> Database >  >> RDS >> Mysql

Hoe kan ik Emoji-tekens uit mijn invoer filteren, zodat ik kan opslaan in MySQL <5.5?

Het blijkt dus dat dit al een paar keer is beantwoord, ik had gewoon niet helemaal de juiste Google-fu om de bestaande vragen te vinden.

Met dank aan Martijn Pieters , de oplossing kwam uit de wereld van reguliere expressies, met name deze code (gebaseerd op zijn antwoord op de eerste link hierboven):

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)

Het teken waarmee ik vervang is het WHITE MEDIUM SMALL SQUARE (U+25FD) , Ter info, maar kan van alles zijn.

Voor degenen die niet bekend zijn met UCS, zoals ik, dit is een systeem voor Unicode-conversie en een bepaalde build van Python zal ondersteuning bieden voor de UCS-2- of UCS-4-variant, die elk een andere bovengrens hebben voor tekenondersteuning.

Met de toevoeging van deze code lijken de strings prima te blijven bestaan ​​in MySQL 5.1.

Ik hoop dat dit iemand anders in dezelfde situatie helpt!



  1. Hoe MySQL automatisch te laden bij het opstarten op OS X Yosemite / El Capitan

  2. Gebruik PostgreSQL SSL-verbinding in roest met zelfondertekende certificaten

  3. kan de externe sleutel niet laten vallen

  4. 'Serie' toevoegen aan bestaande kolom in Postgres