2017-04-05 6 views
0

API 서버가이 형식 만 인식하기 때문에 'utf-8'로 인코딩 된 유니 코드 문자를 '%'로 시작하는 16 진수 문자열로 변환하고 싶습니다. .파이썬에서 '%'로 시작하는 바이트를 16 진수 문자열로 변환하는 방법

예를 들어 유니 코드 문자 '※'를 서버에 입력해야하는 경우이 문자를 '% E2 % 80 % BB'문자열로 변환해야합니다. (문자가 위 또는 아래인지는 중요하지 않습니다.)

유니 코드 문자를 바이트로 변환하고 바이트를 https://stackoverflow.com/a/35599781에서 16 진수 문자열로 변환하는 방법을 찾았습니다.

>>> print('※'.encode('utf-8')) 
b'\xe2\x80\xbb' 
>>> print('※'.encode('utf-8').hex()) 
e280bb 

그러나 나는 '% E2 % 80 % BB'또는 % E2 %의 80 % BB '

이를 구현하는 어떤 간결한 방법이있는 것처럼'% '로 시작의 형태를 필요하십니까? 아니면 각 16 진수 문자에 '%'를 추가하는 함수를 만들어야합니까?

선호 솔루션 :

+0

는 URL 인코딩 것 같은데 - 'urllib.parse.urlencode'을보세요. – AChampion

답변

0

이 작업을 수행하는 두 가지 방법이있다. % 기호에 가입 수동으로 다음 두 심볼의 덩어리로 이것을 변환 할 수 있습니다,

urllib.parse.urlencode({'parameter': '※', 'test': 'True'}) 
# parameter=%E2%80%BB&test=True 

을 또는 : urllib.parse.urlencode 사용하여 여러 매개 변수를 지정하고 한 번에 인코딩

def encode_symbol(symbol): 
    symbol_hex = symbol.encode('utf-8').hex() 
    symbol_groups = [symbol_hex[i:i + 2].upper() for i in range(0, len(symbol_hex), 2)] 
    symbol_groups.insert(0, '') 
    return '%'.join(symbol_groups) 

encode_symbol('※') 
# %E2%80%BB 
+0

감사합니다. 선호하는 솔루션은 내가 찾는 것입니다. – dolgom

관련 문제