模型:
class ItemType(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
logger.debug("1. Item Type %s created" % self.name)
return self.name
代码:
(...)
type = re.search(r"Type:(.*?)",text)
itemtype = ItemType.objects.create(name = name.group(1), defaults={'name':name.group(1)})
logger.debug("2. Item Type %s created" % name.group(1))
logger.debug("4. Item Type %s created" % itemtype.name)
logger.debug("3. Item Type %s created" % itemtype)
结果令人意外(当然仅对我而言):
第一个logger.debug
正如预期地打印出了Item Type ąęńłśóć created
,但是第二个则引发了错误:
DjangoUnicodeDecodeError: 'ascii' codec can't decode byte in position :
ordinal not in range(128).
You passed in <ItemType: [Bad Unicode data]> (<class 'aaa.models.ItemType'>)
为什么会出现错误,我该如何修复?
(文本是带有utf-8编码的html响应)
更新
我在模型中添加了调试,结果显示:
2014-10-06 09:38:53,342 DEBUG views 2. Item Type ąęćńółśż created
2014-10-06 09:38:53,342 DEBUG views 4. Item Type ąęćńółśż created
2014-10-06 09:38:53,344 DEBUG models 1. Item Type ąęćńółśż created
2014-10-06 09:38:53,358 DEBUG models 1. Item Type ąęćńółśż created
所以为什么调试3无法打印出来? 更新2 问题在这里:
itemtype = ItemType.objects.create(name = name.group(1), defaults={'name':name.group(1)})
如果我将它变成
itemtype = ItemType.objects.create(name = name.group(1), defaults={'name':u'ĄĆĘŃŁÓŚ'})
一切都很好。
那么如何将其转换为Unicode? unicode(name.group(1))无效。