--- pycarddav/model.py.orig 2014-02-04 23:38:46 UTC +++ pycarddav/model.py @@ -27,6 +27,7 @@ The pycarddav abstract model and tools for VCard handl from __future__ import print_function import base64 +import chardet import logging import sys from collections import defaultdict @@ -197,8 +198,17 @@ class VCard(defaultdict): @property def name(self): - return unicode(self['N'][0][0]) if self['N'] else '' + #return unicode(self['N'][0][0]) if self['N'] else '' + if self['N']: + if type(self['N'][0][0]) is unicode: + return self['N'][0][0] + else: + return unicode(self['N'][0][0], chardet.detect(self['N'][0][0])['encoding']) + else: + return '' + #return unicode(self['N'][0][0], chardet.detect(self['N'][0][0])['encoding']) if self['N'] else '' + @name.setter def name(self, value): if not self['N']: @@ -207,7 +217,14 @@ class VCard(defaultdict): @property def fname(self): - return unicode(self['FN'][0][0]) if self['FN'] else '' + #return unicode(self['FN'][0][0]) if self['FN'] else '' + if self['FN']: + if type(self['FN'][0][0]) is unicode: + return self['FN'][0][0] + else: + return unicode(self['FN'][0][0], chardet.detect(self['FN'][0][0])['encoding']) + else: + return '' @fname.setter def fname(self, value):