【发布时间】:2010-10-14 13:32:15
【问题描述】:
这是在 python 2.4 中。这是我的情况。我从数据库中提取了一个字符串,它包含一个变音符号 'o' (\xf6)。此时如果我运行 type(value) 它会返回 str。然后我尝试运行 .decode('utf-8'),我得到一个错误('utf8' 编解码器无法解码位置 1-4 中的字节)。
真的,我的目标只是成功地让 type(value) 返回 unicode。我找到了earlier question 这有一些有用的信息,但从选择的答案的例子似乎并不适合我。我在这里做错了什么吗?
这里有一些代码可以重现:
Name = 'w\xc3\xb6rner'.decode('utf-8')
file.write('Name: %s - %s\n' %(Name, type(Name)))
我从来没有真正接触过 write 语句,因为它在第一条语句上失败了。
感谢您的帮助。
编辑:
我验证了数据库的字符集是 utf8。所以在我的重现代码中,我将 '\xf6' 更改为 '\xc3\xb6',但仍然发生故障。 'utf-8' 和 'utf8' 有区别吗?
使用编解码器写入文件的技巧很方便(我肯定会使用它),但在这种情况下,我只是出于调试目的写入日志文件。
【问题讨论】:
-
您在数据库表中使用什么字符集?我猜它可能不是utf-8。尝试将其传递给
decode。