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

Python, converti char a 4 byte per evitare errori MySQL Valore stringa errato:

In una build UCS-2, python utilizza internamente 2 unità di codice per ogni carattere unicode su \U0000ffff punto di codice. Le espressioni regolari devono funzionare con quelle, quindi dovresti usare la seguente espressione regolare per trovare una corrispondenza con queste:

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

Questa espressione regolare corrisponde a qualsiasi punto di codice codificato con una coppia di surrogati UTF-16 (vedi Il codice UTF-16 punta da U+10000 a U+10FFFF .

Per renderlo compatibile con le versioni di Python UCS-2 e UCS-4, puoi usare un try: /except per usare l'uno o l'altro:

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

Dimostrazione su una build Python UCS-2:

>>> 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: '