본문 바로가기
👨‍🏫일문일답

URL 인코딩과 HTML 인코딩

by 캔 2022. 10. 21.

인코딩 자체는 정보를 표준화, 보안, 처리 속도 향상, 저장공간 절약 등의 목적으로 다른 형태나 형식으로 변환하는 것을 말한다. 그러다 보니 수많은 종류의 인코딩 방식이 존재한다. 대표적인 게 ASCII, UTF-8 등이고, 이 글에서 다룰 URL 인코딩과 HTML 인코딩이다. 웹 개발을 하는 사람이라면 두 인코딩에 대해 이해해둘 필요가 있다.

 

인간의 문자는 컴퓨터가 이해할 수 없다. 따라서 컴퓨터는 각 문자를 숫자에 대응시켜서 데이터를 저장하거나 처리하는 데 사용한다. 컴퓨터 발전 초기에는 알파벳과 특수 기호들을 숫자에 대응시키는 아스키(ASCII) 인코딩을 사용하였다. 그러다 보니 웹사이트의 주소나 FTP 등 인터넷 서비스에 사용되는 URL에서도 아스키코드밖에 지원하지 않았다. 그러나 알파벳 이외의 문자를 사용하는 경우가 생기다 보니 웹에서 URL나 데이터 전송 시에 데이터를 변환해줄 필요가 있었다. 이때 사용하는 인코딩이 바로 URL 인코딩이다. 웹브라우저의 주소 표시줄에 한글을 입력하면 페이지 이동 시에 퍼센트가 섞인 이상한 코드로 바뀐다. 그래서 '퍼센트 인코딩'이라고도 한다. 문자 데이터를 8비트 단위(옥텟)로 나누고 그 앞에 퍼센트를 붙이는 식이다. 이 퍼센트 인코딩은 RFC 3986이라는 국제 표준 규약을 따른다.

 

참고로, 자바스크립트에서는 다음과 같은 함수로 URL 인코딩을 수행할 수 있다. 자바에서는 UrlEncoder.encode() 메서드를 사용하면 된다.

// 아스키 코드가 아니면 모두 유니코드 형식으로 변환
escape()

// 인터넷 주소에 쓰이는 특수문자들은 제외하고 아스키 코드가 아닌 문자들을
// 유니코드 형식으로 변환
encodeURI() 

// 아스키 코드가 아닌 모든 문자들을 유니코드 형식으로 변환
encodeURIComponent()

 

한편, HTML 인코딩은 HTML 안에서 '<', '>', '&' 등과 같이 자바 스크립트 등 프로그래밍 언어에서 사용하는 기호들을 악용하는 것을 막기 위해 사용하는 인코딩이다. '&(코드명);'과 같은 형식이다.