Comment décaper des unicodes et les enregistrer dans des bases de données utf-8

J'ai une base de données (mysql) où je veux stocker marinés données.

Les données peuvent être, par exemple, un dictionnaire, qui peut contenir de l'unicode, par exemple

data = {1 : u'é'}

et la base de données (mysql) est en utf-8.

Quand je cornichon,

import pickle
pickled_data = pickle.dumps(data)
print type(pickled_data) # returns <type 'str'>

l'résultant pickled_data est une chaîne de caractères.

Quand j'essaie de les stocker dans une base de données (par exemple, dans un Champ de texte), cela peut causes des problèmes. En particulier, je suis arriver à un certain moment,

UnicodeDecodeError "'utf8' codec can't decode byte 0xe9 in position X"

lorsque vous essayez d'enregistrer le pickled_data dans la base de données. Cela a un sens parce que pickled_data peut avoir des non-caractères utf-8. Ma question est de savoir comment dois-je stocker pickled_data sur utf-8 base de données?

Je vois deux candidats possibles:

  1. Encoder le résultat de la saumure.vidage de l'utf-8 et de le stocker. Quand j'ai envie de cornichon.charge, j'ai pour le décoder.
  2. Magasin de la marinés chaîne de caractères dans un format binaire (comment?), qui des forces de tous les caractères à l'intérieur de l'ascii.

Mon problème est que je ne vois pas quelles sont les conséquences du choix de l'une de ces options dans le long terme. Depuis le changement déjà nécessite un certain effort, je suis poussé à demander un avis sur cette question, en demandant pour un éventuel meilleurs candidats.

(P. S. C'est par exemple utile dans Django)

source d'informationauteur Jorge Leitão