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

时间:2016-03-22 04:40:52

标签: python unicode utf-8 encode

这一定是一项微不足道的任务,但我无法处理。 我的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'Абакан'

我做错了什么?

2 个答案:

答案 0 :(得分:3)

  

我做错了什么?

不打印。

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

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

答案 1 :(得分:1)

正如@Amadan所说,你只需要打印你的字符串。

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

答案是,如果您输入string + 输入,这将导致显示对象string的{​​{3}}的表示形式;在Python 3.x中运行print string(或print(string))时,您将获得一个人类可读的字符串表示形式 - repr() - 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)
Абакан
>>> 

进一步阅读:str()