http://stackoverflow.com/questions/14539807/convert-unicode-with-utf-8-string-as-content-to-str解这个问题的 tricky 之处在于利用这个特性:
Unicode codepoints U+0000 to U+00FF all map one-on-one with the latin-1 encoding
先将 unicode 字符串编码为 latin1 字符串,编码后保留了等价的字节流数据。
而此时在这个问题中,这一字节流数据又恰恰对应了 utf8 编码,因此对其进行 utf8 解码即可还原最初的 unicode 字符。
不过值得注意的是,需要确定的是形如\xe8\xb4\xa2 究竟是 utf8 编码还是类似 gbk 的其他类型编码,
这一点对于最终正确还原 unicode 字符也是同样重要的。
>>> x = u'\xe8\xb4\xa2\xe5\x8a\xa1/\xe9\x87\x91\xe8\x9e\x8d/\xe4\xbf\x9d\xe9\x99\xa9'
>>> x.encode("latin1")
'\xe8\xb4\xa2\xe5\x8a\xa1/\xe9\x87\x91\xe8\x9e\x8d/\xe4\xbf\x9d\xe9\x99\xa9'
>>> x.encode("latin1").decode("utf8")
u'\u8d22\u52a1/\u91d1\u878d/\u4fdd\u9669'
>>> print x.encode("latin1").decode("utf8")
财务 /金融 /保险