已有s = u'Gaga\xe2\x80\x99s'
,但需要转换为t = u'Gaga\u2019s'
如何最好地实现此转换?
s = u'Gaga\xe2\x80\x99s'
t = u'Gaga\u2019s'
x = s.encode('raw-unicode-escape').decode('utf-8')
assert x==t
print(x)
Gaga’s
无论您在哪里解码原始字符串,它很可能是使用Latin-1或其近亲进行解码的。由于Latin-1是Unicode的前256个码点,因此这样做是可行的:
>>> s = u'Gaga\xe2\x80\x99s'
>>> s.encode('latin-1').decode('utf8')
u'Gaga\u2019s'
import codecs
s = u"Gaga\xe2\x80\x99s"
s_as_str = codecs.charmap_encode(s)[0]
t = unicode(s_as_str, "utf-8")
print t
打印
u'Gaga\u2019s'
codecs.charmap_encode
,链接在哪里? - agf
print repr(t)
仍然输出'Gaga\xe2\x80\x99s'
。 - Acorn