Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Python, converta char de 4 bytes para evitar erro do MySQL Valor de string incorreto:


Em uma compilação UCS-2, o python usa 2 unidades de código internamente para cada caractere unicode no \U0000ffff ponto de código. As expressões regulares precisam funcionar com elas, então você precisa usar a seguinte expressão regular para corresponder a elas:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')

Essa expressão regular corresponde a qualquer ponto de código codificado com um par substituto UTF-16 (consulte Pontos de código UTF-16 U+10000 a U+10FFFF .

Para tornar isso compatível com as versões Python UCS-2 e UCS-4, você pode usar um try: /except usar um ou outro:
try:
    highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
    # UCS-2 build
    highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')

Demonstração em uma compilação 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: '