0

我正在尝试将 CSV 字符串导入到我在 django 中的模型中,但它一直在抛出

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

这是我当前的视图代码。

def saveLoot(request):
    if 'q' in request.POST:
        scsv = request.POST['q']
        f = StringIO.StringIO(scsv)
        reader = csv.reader(f, delimiter=',')
        for row in reader:
            user = UserProfile.objects.get(character=row[3])
            loot = Loot(loot_id=row[0], item_name=row[1], source=row[2], winner=user, loot_type=row[4], lockout_tier=row[5], time=row[6], date=row[7])
            loot.save() 
        message = "I like pie, it's good, and guess what. I've saved that for you."
    else:
        message = 'Fill the damn box in will you.'
    return HttpResponse(message)

似乎我试图从 UserProfile 模型中提取用户的地方,带有重音符号的字符没有正确编码,从而导致了这个错误。

我知道这可能是非常基本的东西,我已经尝试设置默认编码,距离我上次查看 python 已经有一段时间了(近 12 个月)。

4

1 回答 1

0

我记得现在该怎么做。

我当然不确定这是否是最有效的方法,但这就是我解决它的方法。

scsv = request.POST['q'].encode('utf-8')

如果有人有更好的方法,那我将不胜感激。

于 2013-09-24T15:35:05.280 回答