sql >> Databasteknik >  >> RDS >> Mysql

Python, konvertera 4-byte char för att undvika MySQL-fel. Felaktigt strängvärde:

I en UCS-2-build använder python 2 kodenheter internt för varje unicode-tecken över \U0000ffff kodpunkt. Reguljära uttryck måste fungera med dessa, så du måste använda följande reguljära uttryck för att matcha dessa:

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

Detta reguljära uttryck matchar vilken kodpunkt som helst som är kodad med ett UTF-16 surrogatpar (se UTF-16 Kodpunkter U+10000 till U+10FFFF .

För att göra detta kompatibelt med Python UCS-2 och UCS-4 versioner kan du använda ett try: /except att använda det ena eller det andra:

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

Demonstration på ett UCS-2 pythonbygge:

>>> 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. Rapportera SQLDIAG-prestandadata via RML Utilities Tool | SQL Server Performance Felsökning -7

  2. NLS_CHARSET_ID() Funktion i Oracle

  3. SQLSTATE[42S22]:Kolumnen hittades inte:1054 Okänd kolumn 'id' i 'where-sats' (SQL:välj * från 'låtar' där 'id' =5 limit 1)

  4. Typkonvertering. Vad gör jag med ett PostgreSQL OID-värde i libpq i C?