【发布时间】:2011-03-14 08:28:09
【问题描述】:
我已经对此有一段时间了,我已经阅读了很多文章,但问题并没有更清楚。我有一堆字符串存储在我的数据库中,想象一下:
x = '\xd0\xa4'
y = '\x92'
在 Python shell 中,我得到以下信息:
print x
Ф
print y
?
这正是我想看到的。但是有以下内容:
print unicode(x, 'utf8')
Ф
但不是这个:
unicode(y, 'utf8')
UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 0: unexpected code byte
我的感觉是我们的字符串被破坏了,因为 Django 试图将它们转换为 unicode,但我只是在猜测这一点。任何见解或解决方法都值得赞赏。
UPDATE:当我查看包含 '\x92' 值的行的数据库时,我看到这个字符为 '。一个撇号。我正在使用 Unicode UTF-8 编码查看数据库的内容。
【问题讨论】:
-
y不是有效的 UTF-8 编码字符串。为什么你希望 Python 能够解码? -
另外,我假设
x = '\xd0\xa4(有一个额外的斜线) -
@Thanatos。我知道。但是如何在不指定编码的情况下打印呢?可以推断编码吗?
-
顺便说一句,
x = '\xd0\xa4'可能会做一些与从数据库加载字符串完全不同的事情。 -
下次不要自作聪明,把你的问题减少到无关的事情上,谢谢。