sql >> Database >  >> RDS >> Mysql

Hoe unicode-tekens filteren (of vervangen) die meer dan 3 bytes in UTF-8 in beslag nemen?

Unicode-tekens in de reeksen \u0000-\uD7FF en \uE000-\uFFFF hebben coderingen van 3 bytes (of minder) in UTF8. Het \uD800-\uDFFF-bereik is voor multibyte UTF16. Ik ken python niet, maar je zou een reguliere expressie moeten kunnen instellen om buiten die bereiken te matchen.

pattern = re.compile("[\uD800-\uDFFF].", re.UNICODE)
pattern = re.compile("[^\u0000-\uFFFF]", re.UNICODE)

Bewerken door Python uit het script van Denilson Sá toe te voegen in de hoofdtekst van de vraag:

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)    


  1. Common Sense-licentiewijzigingen voor SQL Server 2014 Standard Edition

  2. De kosten van gratis PostgreSQL-publiciteit

  3. Een gids voor database-automatisering met ClusterControl van verschillendenines

  4. ORA-38868