这一定是一项微不足道的任务,但我无法处理。 我的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'Абакан'
我做错了什么?
答案 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()