sql >> Base de Datos >  >> RDS >> Mysql

Python, convierta caracteres de 4 bytes para evitar el error de MySQL Valor de cadena incorrecto:

En una compilación UCS-2, python usa 2 unidades de código internamente para cada carácter Unicode sobre el \U0000ffff punto de código Las expresiones regulares deben funcionar con ellos, por lo que deberá usar la siguiente expresión regular para que coincida con estos:

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

Esta expresión regular coincide con cualquier punto de código codificado con un par sustituto UTF-16 (ver UTF-16 Puntos de código U+10000 a U+10FFFF .

Para que esto sea compatible con las versiones UCS-2 y UCS-4 de Python, puede utilizar try: /except usar uno u otro:

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

Demostración en una compilación de 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: '