2011-06-26 17 views
2

Pythonで次の変換を行うにはどうすればよいですか?Python Unicode変換

"杭州" to "%BA%BC%D6%DD" 
"大连" to "%B4%F3%C1%AC" 

答えて

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'の文字列を "杭州"に変換する方法を教えてください。 – 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 

あなたが使用しているエンコーディングは、1つのことを教えてください。

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