sql >> Databáze >  >> RDS >> Mysql

Jak mohu filtrovat znaky Emoji z mého vstupu, abych mohl uložit v MySQL <5.5?

Ukazuje se tedy, že toto bylo již několikrát zodpovězeno, jen jsem neměl úplně správný Google-fu, abych našel existující otázky.

Díky Martijn Pieters , řešení přišlo ze světa regulárních výrazů, konkrétně tento kód (na základě jeho odpovědi na první odkaz výše):

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)

Znak, kterým nahrazuji, je WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, ale může to být cokoliv.

Pro ty, kteří neznají UCS, jako jsem já, je to systém pro konverzi Unicode a dané sestavení Pythonu bude zahrnovat podporu pro variantu UCS-2 nebo UCS-4, z nichž každá má jinou horní hranici podpory znaků.

S přidáním tohoto kódu se zdá, že řetězce v MySQL 5.1 v pohodě přetrvávají.

Doufám, že to pomůže někomu dalšímu ve stejné situaci!



  1. Jak odečíst minuty od hodnoty data a času v MariaDB

  2. Jak získám ID po INSERT do databáze MySQL pomocí Pythonu?

  3. SQL:Jak udržet pořadí řádků pomocí DISTINCT?

  4. Co je SQL Server? (Definice, verze, edice)