문제

HTTP 헤더에서 문자열이 있지만 탈출되었습니다. 에스케이프에 어떤 기능을 사용할 수 있습니까?

myemail%40gmail.com -> myemail@gmail.com

urllib.unquote ()가 갈 길이 될까요?

도움이 되었습니까?

해결책

나는 urllib의 것이 확실하다 unquote 이것을하는 일반적인 방법입니다.

>>> import urllib
>>> urllib.unquote("myemail%40gmail.com")
'myemail@gmail.com'

또한 있습니다 unquote_plus:

unquote ()와 마찬가지로 HTML 양식 값을 선택하지 않기 위해 필요한대로 공간별로 + 표시를 대체합니다.

다른 팁

예, 그게 보입니다 urllib.unquote() 그 작업을 수행합니다. (나 코드 패드에서 예제에 대해 테스트했습니다.)

Python 3에서는 이러한 기능이 있습니다 urllib.parse.unquote 그리고 urllib.parse.unquote_plus.

후자는 예를 들어 공간 문자 인 HTTP URL의 쿼리 문자열에 사용됩니다 () 전통적으로 플러스 캐릭터로 인코딩됩니다 (+), 그리고 + 백분율 인코딩됩니다 %2B.

이것들 외에도 있습니다 unquote_to_bytes 주어진 인코딩 된 문자열을 변환합니다 bytes, 인코딩이 알려지지 않았거나 인코딩 된 데이터가 이진 데이터 일 때 사용할 수 있습니다. 그러나 아무도 없습니다 unquote_plus_to_bytes, 필요한 경우 할 수 있습니다.

def unquote_plus_to_bytes(s):
    if isinstance(s, bytes):
        s = s.replace(b'+', b' ')
    else:
        s = s.replace('+', ' ')
    return unquote_to_bytes(s)

사용 여부에 대한 자세한 정보 unquote 또는 unquote_plus 이용 가능합니다 우주 문자 인코딩 URL : + 또는 %20.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top