无法在 python 中将 unicode 转换为 utf-8

Cannot convert unicode to utf-8 in python

这一定是一件微不足道的事情,但我无法处理。 我有 json 看起来像这样。

        {'
          city': u'\u0410\u0431\u0430\u043a\u0430\u043d', 
        'language':{
          u'\u0410\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439': 5608,      
          u'\u0418\u0442\u0430\u043b\u044c\u044f\u043d\u0441\u043a\u0438\u0439': 98
        }
    },

我正在尝试将 unicode 字符串转换为 utf-8。

string=u'\u0410\u0431\u0430\u043a\u0430\u043d'
string.encode('utf-8')

我有

'\xd0\x90\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0\xd0\xbd'

而不是:

u'Абакан'

我做错了什么?

What am I doing wrong?

不打印。

当你在 Python REPL 中评估一个字符串时,你将得到它的 repr。这是'\xd0\x90\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0\xd0\xbd'。当你打印它时,你会得到 Абакан.

print(string.encode('utf-8'))

正如@Amadan 所说,您只需要打印字符串即可。

但是为什么打印字符串可以解决问题?

答案是,如果您键入 string + Enter,这将导致显示 repr() the of the object string; while running print string (or print (string) in Python 3.x) you will get a human readable string representation -str()- of string 的表示。

>>> converted = string.encode('utf8')
>>> converted
'\xd0\x90\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0\xd0\xbd'
>>> print converted
Абакан
>>> print repr(converted)
'\xd0\x90\xd0\xb1\xd0\xb0\xd0\xba\xd0\xb0\xd0\xbd'
>>> print str(converted)
Абакан
>>> 

进一步阅读:Difference between __str__ and __repr__ in Python