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

Hvordan kan jeg filtrere Emoji-tegn fra mit input, så jeg kan gemme i MySQL <5.5?

Så det viser sig, at dette er blevet besvaret et par gange, jeg havde bare ikke helt den rigtige Google-fu til at finde de eksisterende spørgsmål.

Tak til Martijn Pieters , løsningen kom fra verden af ​​regulære udtryk, specifikt denne kode (baseret på hans svar på det første link ovenfor):

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)

Tegnet, jeg erstatter med, er WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, men kunne være hvad som helst.

For dem, der ikke er bekendt med UCS, som mig, er dette et system til Unicode-konvertering, og en given build af Python vil inkludere understøttelse af enten UCS-2- eller UCS-4-varianten, som hver har en anden øvre grænse for tegnunderstøttelse.

Med tilføjelsen af ​​denne kode ser strengene ud til at fortsætte i MySQL 5.1 fint.

Håber dette hjælper andre i samme situation!



  1. Tilføj 6 timer til now()-funktionen

  2. PHP:Advarsel:sort() forventer, at parameter 1 er array, ressource givet

  3. MYSQL vælg join multiple table og SUM

  4. Sådan opretter du visning i SQL