Django - Postgres - 'ascii'编解码器无法对位置0中的字符u'\ xa0'进行编码:序数不在范围内(128)

时间:2016-11-03 05:58:28

标签: django postgresql

因此,当我尝试使用管理控制台并查看数据库中的某个模型时,我收到上述错误。我的数据库中的行是从网站上删除的,所以如果我是正确的,我不小心刮掉了'\ xa0'字符而Django不喜欢这个。如果我错了,请纠正我。

现在要修复它,我想我可以运行一个psql查询来查找任何u'\ xa0'字符并用我需要的任何内容替换它们(在这种情况下为空字符串)。

我想也许我可以使用postgres的替换功能:

UPDATE <table> SET <field> = replace(<field>, '\xa0', '')

但似乎没有效果。

任何提示?

错误:

'ascii' codec can't encode character u'\xa0' in position 0: ordinal not in range(128)

2 个答案:

答案 0 :(得分:0)

也许您已经实施了__unicode__()方法,而不是unicode,您将返回一个字符串。

所以你要这样做:

def __unicode__(self):
    return "%s" % self.something

而不是:

def __unicode__(self):
    return u"%s" % self.something

答案 1 :(得分:0)

对于遇到类似问题的人来说,这就是我所做的。我把我的数据库拉成了一个csv文件,所以我可以用ctrl + f轻松搜索它。然后我想出了我的数据库无法理解的ascii字符,我调整它们以满足我的需要。我用调整后的csv覆盖了我的数据库。

我的数据库信息已从网页上删除,因此将来我会确保我的数据库接受我所收集的信息。