sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag filtrera Emoji-tecken från min inmatning så att jag kan spara i MySQL <5.5?

Så det visar sig att detta har besvarats några gånger, jag hade helt enkelt inte riktigt rätt Google-fu för att hitta de befintliga frågorna.

Tack till Martijn Pieters , lösningen kom från världen av reguljära uttryck, närmare bestämt denna kod (baserat på hans svar på den första länken ovan):

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)

Tecknet jag ersätter med är WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, men kan vara vad som helst.

För de som inte känner till UCS, som jag, är detta ett system för Unicode-konvertering och en given version av Python kommer att innehålla stöd för antingen UCS-2- eller UCS-4-varianten, som var och en har olika övre gränser för teckenstöd.

Med tillägget av den här koden verkar strängarna bestå i MySQL 5.1 bra.

Hoppas detta hjälper någon annan i samma situation!



  1. räkna flera kolumner i en fråga

  2. PHP &MySQL paginering

  3. Schemadefinitioner av DBMS

  4. Hur man infogar stora mängder data i sqlite-databasen i Android