2014-01-20 118 views
3

例如,一个十六进制转义序列:转换的Unicode字符串使用Python

>>> 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( 'utf-8')编码( '十六进制') '得到十六进制,但你需要做更多的工作来插入想要的''%''。 – monkut

回答

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' 
相关问题