Python:UTF-8问题(再次......)

时间:2010-03-28 21:16:46

标签: python django encoding utf-8

我有一个数据库,它每天两次与外部网络源同步。此Web源包含一组条目,这些条目具有名称和一些有关这些名称的额外信息。

其中一些名称很愚蠢,我想在将它们插入我自己的数据库时重命名它们。要重命名这些愚蠢的名字,我有一个标准字典:

RENAME_TABLE = { "Wσird" : "Weird", ... }

正如您所看到的,这是UTF-8发挥作用的地方。这是执行所有有问题条目重命名的功能:

def rename_all_entries():
    all_keys = RENAME_TABLE.keys()
    entries = Entry.objects.filter(name__in=all_keys)
    for entry in entries:
        entry.name = RENAME_TABLE[entry.name]
        entry.save()

因此它尝试在RENAME_TABLE中找到旧名称,并在找到时重命名该条目。但是,使用KeyError时,我会收到RENAME_TABLE[entry.name]个例外。

现在我迷路了,我该怎么办?我有......

# -*- coding: utf-8 -*-

...在Python文件的顶部。

1 个答案:

答案 0 :(得分:4)

您收到的错误是由于您想要不在字典中的unicode字符串。回想一下,在Python 2.x中(我假设您正在使用它),默认字符串类型是8位,而不是unicode,因此您实际上是使用8位字符串键入字典。要声明一个unicode字符串,请使用u“my unicode string”。然后它应该被接受为关键。