2011-06-26 242 views

回答

3

要轉換u'杭州''%BA%BC%D6%DD'

In [24]: ''.join('%{0:X}'.format(ord(c)) for c in u"杭州".encode('gbk')) 
Out[24]: '%BA%BC%D6%DD' 

In [25]: ''.join('%{0:X}'.format(ord(c)) for c in u"大連".encode('gbk')) 
Out[25]: '%B4%F3%C1%AC' 

要轉換'%BA%BC%D6%DD'u'杭州'

In [54]: import binascii  
In [55]: print(binascii.unhexlify(''.join('%BA%BC%D6%DD'.split('%'))).decode('gbk')) 
杭州 
+0

感謝您的回答。有用。你能教我如何將字符串'%BA%BC%D6%DD'轉換回u「杭州」嗎? – jack

+0

@jack:我添加了一種方法將''%BA%BC%D6%DD''轉換回'u「杭州」'。但是請注意,如果您的Python版本足夠現代(例如Python3),Dietrich Epp提供了更好的答案(使用'urllib.parse.quote'和/或'urllib.parse.unquote')。 – unutbu

3

你需要給我們更多的信息。

def encode(s): 
    if s == "杭州": 
     return "%BA%BC%D6%DD" 
    if s == "大連": 
     return "%B4%F3%C1%AC" 
    raise ValueError 

您需要告訴我們您正在使用的編碼。

import urllib.parse 
def encode(s): 
    return urllib.parse.quote(s.encode('gbk'))