Il s'avère donc que cela a été répondu plusieurs fois, je n'avais tout simplement pas le bon Google-fu pour trouver les questions existantes.
- Python, convertissez un caractère de 4 octets pour éviter l'erreur MySQL "Valeur de chaîne incorrecte :"
- Avertissement déclenché par l'insertion Unicode 4 octets vers mysql
Merci à Martijn Pieters , la solution est venue du monde des expressions régulières, plus précisément de ce code (basé sur sa réponse au premier lien ci-dessus) :
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)
Le caractère que je remplace est le WHITE MEDIUM SMALL SQUARE (U+25FD)
, pour votre information, mais cela pourrait être n'importe quoi.
Pour ceux qui ne connaissent pas UCS, comme moi, il s'agit d'un système de conversion Unicode et une version donnée de Python inclura la prise en charge de la variante UCS-2 ou UCS-4, chacune ayant une limite supérieure différente pour la prise en charge des caractères. /P>
Avec l'ajout de ce code, les chaînes semblent bien persister dans MySQL 5.1.
J'espère que cela aidera quelqu'un d'autre dans la même situation !