将 Python 字符串转换为 unicode

<! -- 自动插入文本结束 --&gt;

我有一个包含 unicode 字符的字符串,例如 \u2026 等。不知为什么,我收到的字符串不是unicode,而是str。如何将其转换回 unicode?

>>> a="Hello\u2026"
>>> b=u"Hello\u2026"
>>> print a
Hello\u2026
>>> print b
Hello…
>>> print unicode(a)
Hello\u2026
>>> 

因此,"unicode(a) "显然不是答案。那么什么才是答案呢?

解决办法

Unicode 转义只在 unicode 字符串中起作用,因此这个

 a="\u2026"

实际上是由 6 个字符组成的字符串:'&#39;, 'u', '2', '0', '2', '6'。

要将其转换成 unicode,请使用 decode('unicode-escape')

a="\u2026"
print repr(a)
print repr(a.decode('unicode-escape'))

## '\\u2026'
## u'\u2026'
评论(0)

使用 "unicode-escape "解码器解码:

>>> a="Hello\u2026"
>>> a.decode('unicode-escape')
u'Hello\u2026'
>>> print _
Hello…

这是因为对于非单码字符串来说,"unicode\u2026 "不会被识别,而是会被视为一系列字符(说得更清楚些,就是"'Hello\u2026')。您需要解码转义字符,而unicode-escape` 编解码器可以帮您做到这一点。

请注意,你可以通过指定编码解码器参数,让 unicode 以同样的方式识别它:

>>> unicode(a, 'unicode-escape')
u'Hello\u2026'

a.decode()方式更好。

评论(0)
>>> a="Hello\u2026"
>>> print a.decode('unicode-escape')
Hello…
评论(0)