리퀘스트 모듈로 가져온 response 개체에서 유니코드를 한글로 변환하고 싶습니다.
조회수 2170회
import requests
url = '임의의_주소'
data_payload = {'1', '1'}
res = requests.post(url, data=data_payload)
txt = res.text
print(res.text)
이런 소스코드가 있으면 res는utf-8로 인코딩된 'requests.models.Response' 개체입니다. 그리고 테스트로 res.text를 출력하면 영어는 잘 나오는데 한글이 유니코드로 나옵니다. 예를 들면 '정'자가 \uC815 이렇게 출력되는데요.
이런 경우에 유니코드를 한글로 변환해서 출력하려면 어떻게 해야 하나요?
print(res.text.encode(encoding='utf-8').decode(encoding='utf-8')
인터넷에서 찾아보고 이런식으로 해봤는데 여전히 유니코드 \uC815 이렇게 출력되더라고요. 제 생각에는 res.text가 되기전에 유니코드 인코딩을 해야 될거같은데 잘 모르겠습니다.
2 답변
-
requests 의 response 객체의 text 는 이미 인코딩을 적용해서 디코드한 파이썬 유니코드 객체일 겁니다. (즉, 추가적으로 인코딩이나 디코딩을 적용해 줄 필요가 없음.)
한글 "정"이 "\uC815"로 표현된 것은
print
함수가 복잡하게 nested 되어 들어 있는 한글을 잘 표현해 주지 못하기 때문에 저렇게 보일 뿐일 가능성이 큽니다. (0xc815 == ord('정')
입니다.)( https://blog.emacsos.com/unicode-in-python.html )
그래서, 파이썬에서 print 문으로 한글 문자열의 인코딩을 확인해 보는 것은 매우 불완전하고 위험합니다.
추가 : 제 답변이 논리가 안 맞네요. 질문자의 해결방법을 보니, response 텍스트 자체가 아스키로만 이루어지도록, 다국어문자(한글을 포함한)는 이스케이프 된 형태였던 것이 아닐까 싶습니다.
-
댓글 입력