Så det viser sig, at dette er blevet besvaret et par gange, jeg havde bare ikke helt den rigtige Google-fu til at finde de eksisterende spørgsmål.
- Python, konverter 4-byte tegn for at undgå MySQL-fejl "Forkert strengværdi:"
- Advarsel rejst ved at indsætte 4-byte unicode til mysql
Tak til Martijn Pieters , løsningen kom fra verden af regulære udtryk, specifikt denne kode (baseret på hans svar på det første link ovenfor):
import re
try:
# UCS-4
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# mytext = u'<some string containing 4-byte chars>'
mytext = highpoints.sub(u'\u25FD', mytext)
Tegnet, jeg erstatter med, er WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI, men kunne være hvad som helst.
For dem, der ikke er bekendt med UCS, som mig, er dette et system til Unicode-konvertering, og en given build af Python vil inkludere understøttelse af enten UCS-2- eller UCS-4-varianten, som hver har en anden øvre grænse for tegnunderstøttelse.
Med tilføjelsen af denne kode ser strengene ud til at fortsætte i MySQL 5.1 fint.
Håber dette hjælper andre i samme situation!