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