>  기사  >  백엔드 개발  >  Python에서 URL 매개변수를 올바르게 인코딩하는 방법: `urllib.quote()` 및 `urllib.urlencode()`의 제한 사항 해결

Python에서 URL 매개변수를 올바르게 인코딩하는 방법: `urllib.quote()` 및 `urllib.urlencode()`의 제한 사항 해결

Barbara Streisand
Barbara Streisand원래의
2024-10-26 03:28:03191검색

How to Properly Encode URL Parameters in Python:  Addressing Limitations of `urllib.quote()` and `urllib.urlencode()`

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.