2014-01-20 8 views
3

Например:Преобразование строки Юникода в шестнадцатеричной управляющей последовательности с использованием 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 ('utf8') кодируют ('шестигранной') ', чтобы получить шестнадцатеричный код, но вам нужно будет сделать еще одну работу, чтобы вставить нужный«% ». – 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' 
Смежные вопросы