2.4. 안전하지 않은 문자

URL은 잘 호환되도록 설계되었다.
그리고 URL은 인터넷에 있는 모든 리소스가 여러 프로토콜을 통해서 전달될 수 있도록, 각 리소스에 유일한 이름을 지을 수 있게 설계되었다.
모든 프로토콜이 데이터를 전송하기 위해서 서로 다른 장치를 가지고있기 때문에, 어떤 인터넷 프로토콜을 통해서든 안전하게 전송될 수 있도록 URL을 설계하는 것은 중요했다.

안전한 전송이란, 정보가 유실될 위험 없이 URL을 전송할 수 있다는 것을 의미한다.
전자메일에 사용되는 SMTP(Simple Mail Transfer Protocol)같은 프로토콜은 특정 문자를 제거할 수도 있는 전송 방식을 사용한다.

이는 메시지에 대해 7비트 인코딩을 사용하기 때문이다.
만약 소스가 8비트 이상으로 인코딩되어 있으면 정보가 소실될 수 있다.

문자가 제거되는 일을 피하고자 URL은 상대적으로 작고 일반적으로 안전한 알파뱃 문자만 포함하도록 허락한다.

URL 설계자들은, 모든 인터넷 프로토콜로 URL이 전송될 수 있기를 바랐고, 이와 함께 가독성도 있기를 바랐다.
따라서 출력이 되지 않거나 보이지 않는 문자를 이메일 프로그램에서 사용할 수 있다고 해서, 그리고 그 문자들이 변환될 수 있다 하더라도, URL에서 그런 문자들을 사용하는 것은 금지되었다.

인쇄되지 않는 문자에는 공백이 포함된다.(RFC 2396에서는 애플리케이션이 공백을 무시하기를 추천한다는 점을 알아두자.)

여기에 더하여 URL은 더 완벽해져야 했다.
URL 설계자는 사람들이 URL에 이진 데이터나 일반적으로 안전한 알파벳 외의 문자도 포함하려고 할 때가 있다는 것을 알게 되었다.
그래서 이스케이프라는 기능을 추가하여, 안전하지 않은 문자를 안전한 문자로 인코딩할 수 있게 하였다.

다음에서, 사용할 수 있는 알파벳과 URL의 인코딩 규칙을 간략히 요약한다.