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

Python, konverter 4-byte tegn for at undgå MySQL-fejl Forkert strengværdi:

I en UCS-2-build bruger python 2 kodeenheder internt for hvert unicode-tegn over \U0000ffff kodepunkt. Regulære udtryk skal fungere sammen med dem, så du skal bruge følgende regulære udtryk for at matche disse:

highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')

Dette regulære udtryk matcher ethvert kodepunkt, der er kodet med et UTF-16 surrogatpar (se UTF-16 Kodepunkter U+10000 til U+10FFFF .

For at gøre dette kompatibelt på tværs af Python UCS-2 og UCS-4 versioner, kan du bruge en try: /except at bruge det ene eller det andet:

try:
    highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
    # UCS-2 build
    highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')

Demonstration på en UCS-2 python-build:

>>> import re
>>> highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
>>> example = u'Some example text with a sleepy face: \U0001f62a'
>>> highpoints.sub(u'', example)
u'Some example text with a sleepy face: '



  1. Brug PostgreSQL SSL-forbindelse i rust med selvsignerede certifikater

  2. Java Class.forName, JDBC-forbindelse indlæser driver

  3. PostgreSQL-databasetjeneste

  4. Matcher alle værdier i IN-sætning