일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 2
- 컴퓨터공학
- 네트워크보안
- Yes
- 사이버보안
- 데이터분석
- 자바스크립트
- 보안
- 알고리즘
- 인공지능
- I'm Sorry
- 딥러닝
- 자료구조
- 네트워크
- 소프트웨어
- 클라우드컴퓨팅
- 소프트웨어공학
- 머신러닝
- 파이썬
- 코딩
- 빅데이터
- 데이터베이스
- 컴퓨터과학
- 웹개발
- 프로그래밍언어
- 버전관리
- 데이터구조
- 컴퓨터비전
- 프로그래밍
- 데이터과학
- Today
- Total
스택큐힙리스트
파이썬에서 UTF-8 URL 디코딩하기 본문
파이썬 2.7에서 URL이 example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0와 같은 경우, 예상 결과인 example.com?title==правовая+защита으로 디코딩하는 방법은 무엇인가요?
url=urllib.unquote(url.encode(utf8)) 해보았지만, 결과가 잘못된 것 같습니다.
답변 1
데이터는 URL 인용으로 이스케이프 된 UTF-8 인코딩된 바이트입니다. 따라서 투명하게 퍼센트 인코딩 된 데이터를 UTF-8 바이트로 디코딩 한 다음 텍스트로 변환하는 urllib.parse.unquote()와 함께 디코딩하려고 합니다.
from urllib.parse import unquote
url = unquote(url)
데모:
>>> from urllib.parse import unquote
>>> url = 'example.com?title=%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D0%B2%D0%B0%D1%8F+%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0'
>>> unquote(url)
'example.com?title=правовая+защита'
파이썬 2의 해당 부분은 urllib.unquote() 입니다. 하지만 이 부분은 바이트 스트링을 반환하므로 수동으로 디코딩해야 합니다.
from urllib import unquote
url = unquote(url).decode('utf8')
답변 2
파이썬에서 UTF-8 URL 디코딩 방법URL 디코딩은 URL 인코딩 시 사용된 특수문자를 다시 원래대로 디코딩하는 작업을 말합니다. 파이썬에서는 urllib 라이브러리에서 제공하는 unquote 함수를 사용하여 간편하게 디코딩할 수 있습니다.
하지만 UTF-8 문자열은 URL 인코딩 시 이스케이프 되는 방식이 다르기 때문에 일반적인 unquote 함수로 디코딩하면 제대로 처리되지 않을 수 있습니다. 이 경우, urllib.parse 모듈에서 제공하는 quote 함수를 사용하여 UTF-8 문자열을 먼저 이스케이프 처리한 다음, unquote 함수로 디코딩해야 합니다.
아래는 예시 코드입니다.
```python
import urllib.parse
# UTF-8 URL 디코딩
url = 'https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC'
escaped_url = urllib.parse.quote(url)
decoded_url = urllib.parse.unquote(escaped_url)
print(decoded_url)
```
위 코드에서는 한글이 포함된 URL을 UTF-8로 디코딩하고 있습니다. 먼저 urllib.parse 모듈의 quote 함수를 사용하여 URL을 이스케이프 처리한 후, unquote 함수로 다시 디코딩합니다. 결과는 'https://ko.wikipedia.org/wiki/파이썬'이 출력됩니다.
이처럼 파이썬에서는 UTF-8 URL 디코딩을 간편하게 처리할 수 있습니다. 디코딩 시 주의해야 할 점은 urllib 모듈의 unquote 함수만으로는 제대로 처리되지 않을 수 있으므로, quote 함수를 먼저 사용하여 이스케이프 처리해야 한다는 점입니다. 이를 잘 숙지하고 원하는 결과를 얻도록 노력해야 합니다.