Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да филтрирам символите на емоджи от моя вход, за да мога да запиша в MySQL <5.5?

Така че се оказва, че на това е отговорено няколко пъти, просто не разполагах с правилния Google-fu, за да намеря съществуващите въпроси.

Благодарение на Martijn Pieters , решението идва от света на регулярните изрази, по-специално този код (въз основа на неговия отговор на първата връзка по-горе):

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)

Знакът, с който заменям, е WHITE MEDIUM SMALL SQUARE (U+25FD) , FYI, но може да бъде всичко.

За тези, които не са запознати с UCS, като мен, това е система за конвертиране на Unicode и дадена компилация на Python ще включва поддръжка за варианта UCS-2 или UCS-4, всеки от които има различна горна граница за поддръжка на знаци.

С добавянето на този код изглежда, че низовете остават добре в MySQL 5.1.

Надявам се това да помогне на някой друг в същата ситуация!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мога ли да използвам повторно изчислено поле в заявка SELECT?

  2. ГРЕШКА В MySQL 1045 (28000):Достъпът е отказан за потребител 'bill'@'localhost' (използвайки парола:ДА)

  3. JQuery UI Запазване на списък за сортиране

  4. Как да комбинирате няколко колони като една и да форматирате с персонализирани низове?

  5. Масив в Mysql КЪДЕ КАТО?