Python에서 퍼센트 인코딩으로 URL 매개변수를 인코딩
오류를 방지하고 적절한 정규화를 보장하기 위해 URL 매개변수를 퍼센트 인코딩할 때 내장된 urllib.quote() 함수가 부족할 수 있습니다.
기본 인코딩 생략:
다음과 같이 urllib.quote() 사용:
url = "http://example.com?p=" + urllib.quote(query)
/와 같은 중요한 문자 인코딩을 생략하여 OAuth 정규화에 문제를 일으킵니다.
유니코드 지원 결함:
게다가 유니코드 문자열을 처리하지 못하여 ASCII가 아닌 문자를 인코딩하려고 시도할 때 예외가 발생합니다.
urllib.parse.quote() 및 안전 매개변수를 사용하여 향상된 인코딩:
이러한 제한 사항을 해결하려면 urllib를 활용하세요. 해결 방법을 제공하는 Python 3의 parse.quote():
urllib.parse.quote(string, safe='/', encoding=None, errors=None)
안전한 매개 변수의 기본값은 '/'이지만 빈 문자열을 지정하면 추가 ASCII 문자 제외가 비활성화되어 /의 적절한 인코딩이 보장됩니다.
urllib.parse.quote('/test', safe='') # Encodes '/' to '%2F'
Python 2에서 유니코드 처리 수정:
Python 2에는 urllib.quote()에 유니코드 처리 버그가 있었습니다. 이 문제를 해결하려면 퍼센트 인코딩을 적용하기 전에 문자열을 UTF-8로 수동으로 인코딩하세요.
query = urllib.quote(u"Müller".encode('utf8')) print urllib.unquote(query).decode('utf8') # Outputs: Müller
대안: urllib.urlencode()
더 간단한 접근 방식이라면 백분율 인코딩과 유니코드를 자동으로 처리하는 urllib.urlencode() 사용을 고려해 보세요.
encoded_params = urllib.urlencode({'p': query}) # Properly encodes '/' and supports Unicode
위 내용은 Python에서 URL 매개변수를 올바르게 인코딩하는 방법: `urllib.quote()` 및 `urllib.urlencode()`의 제한 사항 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!