DjangoUnicodeDecodeError while storing pickle'd data.
- by Jack M.
I've got a simple dict object I'm trying to store in the database after it has been run through pickle. It seems that Django doesn't like trying to encode this error. I've checked with MySQL, and the query isn't even getting there before it is throwing the error, so I don't believe that is the problem. The dict I'm storing looks like this:
{
'ordered': [
{ 'value': u'First\xd1ame Last\xd1ame',
'label': u'Full Name' },
{ 'value': u'123-456-7890',
'label': u'Phone Number' },
{ 'value': u'[email protected]',
'label': u'Email Address' } ],
'cleaned_data': {
u'Phone Number': u'123-456-7890',
u'Full Name': u'First\xd1ame Last\xd1ame',
u'Email Address': u'[email protected]' },
'post_data': <QueryDict: {
u'Phone Number': [u'1234567890'],
u'Full Name_1': [u'Last\xd1ame'],
u'Full Name_0': [u'First\xd1ame'],
u'Email Address': [u'[email protected]'] }>,
'user': <User: itis>
}
The error that gets thrown is:
'utf8' codec can't decode bytes in position 52-53: invalid data.
Position 52-53 is the first instance of \xd1 (Ñ) in the pickled data.
So far, I've dug around StackOverflow and found a few questions where the database encoding for the objects was wrong. This doesn't help me because there is no MySQL query yet. This is happening before the database. Google also didn't help much when searching for unicode errors on pickled data.
It is probably worth mentioning that if I don't use the Ñ, this code works fine.