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

4

例如:

>>> 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"

有时需要对 URL 进行编码。

当前我是逐字节进行操作的,例如:

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

有没有更简单/更优雅的方法来做到这一点?

1
你可以使用u.encode('utf8').encode('hex')来获取十六进制,但是你需要做一些额外的工作来插入所需的"%"。 - monkut
2个回答

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'

3
请参考urllib模块中的quote函数,该函数可以将字符串进行URL编码。具体用法请查看http://docs.python.org/2/library/urllib.html#urllib.quote
>>> import urllib
>>> u = u'€€€'
>>> s = u.encode('utf-8')
>>> print urllib.quote(s)
%E2%82%AC%E2%82%AC%E2%82%AC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接