How to solve UnicodeDecodeError in mezzanine?
Question: I am using mezzanine cms. When I scrap the data from the blogspot I got this
error

    
    
    blog_id: sanavitastudio
    Traceback (most recent call last):
      File "/home/nyros/hs/git_br/2013/Oct-9/healersource/apps/blog_hs/forms.py", line 226, in save
        blog_id=blog_id)
      File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 150, in call_command
        return klass.execute(*args, **defaults)
      File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
        output = self.handle(*args, **options)
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/blog/management/base.py", line 172, in handle
        post, created = BlogPost.objects.get_or_create(**initial)
      File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/db/models/manager.py", line 134, in get_or_create
        return self.get_query_set().get_or_create(**kwargs)
      File "/home/nyros/hs/1a9pinaxenv/local/lib/python2.7/site-packages/django/db/models/query.py", line 452, in get_or_create
        obj.save(force_insert=True, using=self.db)
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 221, in save
        super(Displayable, self).save(*args, **kwargs)
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 77, in save
        super(Slugged, self).save(*args, **kwargs)
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 46, in save
        super(SiteRelated, self).save(*args, **kwargs)
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 116, in save
        self.description = strip_tags(self.description_from_content())
      File "/home/nyros/hs/git_br/mezzanine/mezzanine/core/models.py", line 146, in description_from_content
        description = unicode(self)
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 5: ordinal not in range(128)
    

Code:

    
    
                import xmltest
                blog_id = xmltest.blogname(self.cleaned_data['blog_id'])
    
                print(type(blog_id))
                call_command(
                    'import_blogger_hs',
                    mezzanine_user=request.user.username,
                    blog_id=blog_id)
                return False
    

And blogname method for If you give blogname it will automatically scrap the
blogID and it is represented as blog_id.


Answer: Ah, so now with the code the problem is most likely with
`request.user.username` unfortunately the mezzanine code assumes it is
receiving an ascii object (what `unicode(self)` in the stacktrace is doing)
and is "double encoding" it... grrr!

I would call your method the same way but do this:

    
    
    call_command(
        'import_blogger_hs',
        mezzanine_user=request.user.username.decode('utf-8'),
        blog_id=blog_id)
    

Does that fix the issue?

