인터넷 주소창에서 가끔 URL을 공유하기 위해 복사해서 붙여 넣기를 하다 보면
뒤에 이상한 값들이 %와 함께 섞여서 이어져 있는 것을 한 번쯤은 본 적이 있을 거라 생각됩니다
아래와 같이 인터넷으로 데이터를 주고 받을때 변환되는 URL 인코딩에 대해서 정리 하려 합니다
https://classicblack.tistory.com?data1=%EB%8D%B0%EC%9D%B4%ED%84%B01
* %EB%8D%B0%EC%9D%B4%ED%84%B01 (문자 '데이터1' 인코딩)
URL 인코딩이란?
URL 인코딩(또는 퍼센트 인코딩)은 웹에서 URL을 구성하는 문자들이 안전하게 전송되고 해석될 수 있도록 하는 방법이다
인터넷상에서 데이터를 전송할 때, 특정 문자들은 그 자체로 특별한 의미를 가지거나 전송 과정에서 문제를 일으킬 수 있다
예를 들어, URL 내의 공백은 서버에 의해 올바르게 해석되지 않을 수 있으며, 한글이나 특수 문자는 웹 표준에 따라 직접 URL에 포함될 수 없습니다 이러한 문제를 해결하기 위해 URL 인코딩이 사용
URL 인코딩에서는 ASCII 문자와 예약문자를 제외한 모든 문자, 일부 특수 문자를 퍼센트 기호(%) 다음에 이어지는 두 자리 16진수로 변환하여 나타낸다. 이 두 자리 16진수는 원래 문자의 ASCII 코드 값을 나타낸다
예를 들어, 공백 문자(" ")는 ASCII 코드에서 32(16진수로 20)이므로, URL 인코딩에서는 "%20"으로 표현된다
한글이나 다른 비 ASCII 문자는 보통 UTF-8 인코딩을 거친 후, 그 결과를 바이트 단위로 퍼센트 인코딩
[예시 1]
- 공백(" ") → %20
- 쉼표(",") → %2C
- 한글 "가" (UTF-8 인코딩 된 후) → %EA%B0%80
[예시 2]
위에 보면 빨간글씨로 표현된 예약어와 ASCII로 변환이 가능한 data1, data2 글자를 제외한 데이터 1, 데이터 2가 %xx형태로 인코딩 된 것을 볼 수가 있다
- 데이터 1 : %EB%8D%B0%EC%9D%B4%ED%84%B01
- 데이터 2 : %EB%8D%B0%EC%9D%B4%ED%84%B02
여기서 빨간 글씨로 표현된 예약어는 인코딩을 안 해도 돼?라는 궁금증이 생길 수 있다
이름에서 알 수 있듯이 예약어는 URL 상에서 특정 기능을 하는 문자로 웹 클라이언트와 서버 간에 서로 예약된 문자이다
* 예약어를 예약어로 사용하지 않고 전달하려는 값으로 보내려 할 때는 인코딩해서 보내면 된다
[예약 문자 종류]
문자 | 인코딩 |
? | 파라미터 시작 알림 |
= | 파라미터 값 대입 |
& | 다음 파라미터 식별자 |
+ | 공백 |
! * ' ( ) ; : @ $ , / # [ ] | 그 외 문자 |
URL 인코딩은 웹에서 데이터의 안전한 전송을 보장하기 위한 필수적인 과정으로
따라서 웹 개발을 할 때, URL에 사용될 문자열이 적절히 인코딩 되었는지 확인하며 사용해야겠다
'IT > 문자인코딩' 카테고리의 다른 글
문자 인코딩(Character Encoding) 유니코드, UTF-8, UTF-16, UTF-32, EUC-KR, CP949에 대해서 정리해보자 (0) | 2024.06.01 |
---|---|
인코딩(Encoding)/디코딩(Decoding), MIME, Base64, 쉽게 이해하기 (0) | 2024.05.31 |
바이너리(Binary), 바이트(Byte), 아스키(ASCII) 코드에 대한 정리 (0) | 2024.05.31 |