使用Python将Unicode字符串转换为十六进制转义序列

时间:2014-01-20 02:27:34

标签: python unicode

例如:

>>> u = u'€€€'
>>> s = u.encode('utf8')
>>> s
'\xe2\x82\xac\xe2\x82\xac\xe2\x82\xac'
>>> print s
€€€

但我想得到字符串:

"%E2%82%AC%E2%82%AC%E2%82%AC"

有时需要网址。

目前我正在逐字节地进行,如:

>>> "%0X" % ord(u.encode('utf8')[0])
'E2'

有更简单/更优雅的方法吗?

2 个答案:

答案 0 :(得分:4)

您可以尝试使用urllib2模块。

import urllib2
s = '\xe2\x82\xac\xe2\x82\xac\xe2\x82\xac'
urllib2.quote(s)

输出:

'%E2%82%AC%E2%82%AC%E2%82%AC'

答案 1 :(得分:3)

查看urllib模块http://docs.python.org/2/library/urllib.html#urllib.quote

中的quote函数
>>> import urllib
>>> u = u'€€€'
>>> s = u.encode('utf-8')
>>> print urllib.quote(s)
%E2%82%AC%E2%82%AC%E2%82%AC