Language/JSP

[URI] 한국어가 어떻게 URL에서 Percent-encoding 될까?

적외선 2019. 9. 11. 14:59

환경 및 선수조건

  • Percent-encoding의 개념
  • Character Set이 무엇인지

 

Character Set(Character encoding)이란?

  • Character Set(문자셋) 그리고 Character encoding(문자 인코딩)은 같은 말로 쉽게 말해서 어떤 인코딩 시스템에 의해서 존재하는 문자들을 표현하려는 방법을 의미한다.
  • ASCII나 Unicode가 문자 인코딩들의 대표적으로 알려진 예시입니다.

 

Percent-encoding이란?

  • Percent-encoding이란 URI 혹은 URL에 문자를 표현하는 인코딩 방식으로 RFC 3986에 따라서 알파벳이나 숫자 등 몇몇 문자를 제외한 문자들에 대해서 옥텟 값으로 묶어서 16진수 값으로 코딩하는 방식
  • 예시 : "/internet url" -> "internet%20url"

 

Percent-encoding의 방법

  • RFC3986문서를 찾아보면 정해진 몇몇개의 문자들을 제외하고는 octet(8bit가 한데 모인 것)으로 인코딩한 후에 %를 붙여서 인코딩 한다고 나와있다.
  • 여기서 한국어는 octet(8bit가 한데 모인 것)으로 변형되어서 표시되며 Unicode에 따라서 UTF-8 방식으로 바뀌어서 인코딩 되게 됩니다.

 

즉, 다시 정리하면

  • “한국어” -(UTF-8에 따라서)-> “코드화된 한국어” -(1바이트마다 %를 붙임)-> “퍼센트 인코딩된 한국어”
  • 예시 : “각” -(UTF-8에 따라서)-> “0xEA 0xB0 0x81” -(1바이트마다 %를 붙임)-> “%EA%B0%81”

 

예시

  • “각”의 경우

/각 => /%EA%B0%81

  • “선”의 경우

/선 => /%EC%84%A0

  • “꿳”의 경우

/꿳 => /%EA%BF%B3

 

참고자료

 

참조 - https://twpower.github.io/123-how-to-encode-korean-to-percent-encoding