파이썬3 URL 인코딩 시, 영문은 인코딩이 되지않아요.

조회수 963회

아래와 같이 코딩을 했는데요. 구글링을 해보면 남들은 한글이 안 되서 그러는데, 저는 따로 cp949와 같이 인코딩을 안 해줘도 한글은 되지만 영문은 안되더라구요.

한글은 인코딩이 되는데 영문은 왜 인코딩이 안 되는걸까요? 영문도 인코딩 해주고 싶습니다..

아 그리고, safe를 따로 지정하지 않았는데 / 문자나 \ 문자는 왜 인코딩을 안 하는건가요? 하려면 어떻게 해야할까요?

from urllib import parse

string = '\'abcd/\''
encoding = parse.quote(string)
decoding = parse.unquote(encoding)
print(encoding)  # %27abcd/%27
print(decoding)  # 'abcd/'

2줄 요약.

  1. 한글은 인코딩 되는데 영문은 안 되는 이유와 해결방법.
  2. / 나 \ 와 같은 기호는 별도 safe 처리를 하지 않았음에도 인코딩이 안 되는 이유와 해결방법.

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기
    1. 그렇게 돼야 할 필요가 없기 때문에 안 되는 것이라고 보시면 됩니다.
      굳이 쇼부를 보자면 영문자와 숫자에 대응하는 퍼센트 인코딩이 있기는 합니다. 하지만 이걸 적용했다간 https://%68%74%74%70%73%3A%2F%2F가 되어버려요. 이건 웹브라우저에게 프로토콜로 인식되지 않고, 따라서 URL의 첫머리가 되지 못합니다. (url 인코딩 결과 url이 아닌 것이 나오는 함수가 있다? 삐슝빠슝뿌슝)
      대충 찾아본 결과 URL 인코딩을 해주는 파이썬 라이브러리/메소드 대다수가 이렇게까지 엄격한 인코딩 옵션은 주지 않는 게 그런 이유 때문이 아닌가 합니다.
    2. Python urllib quote percent encode 라고 검색하다가 이런 질답을 보았습니다. 참고가 되면 좋겠네요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)