URL é a sigla para Uniform Resource Locator (Localizador Uniforme de Recursos), utilizado para identificar a localização de recursos na internet.
O formato do URL é scheme:[//authority]path[?query][#fragment], onde authority = [userinfo@]host[:port].
scheme - Refere-se ao protocolo, como http ou ftp, obrigatóriouserinfo - Informações do usuário para autenticação, no formato username:password, opcionalhost - O host, pode ser um domínio ou IP, obrigatórioport - Número da porta, opcional, utiliza a porta padrão do protocolo se não especificadapath - Caminho, utilizado para representar diretórios e endereços de arquivos no host. Opcionalquery - Parâmetros de consulta. Opcionalfragment - Fragmento, refere-se a uma parte específica de um recurso na web. OpcionalUm exemplo simples de URL: https://www.codeeeee.com, utiliza apenas scheme e host, com a porta padrão de https, que é 443
URI, sigla para Uniform Resource Identifier (Identificador Uniforme de Recurso), é utilizado para nomear recursos na internet. URL e URI têm formatos similares e são frequentemente confundidos, podendo ser considerados equivalentes em alguns casos. A diferença entre eles é que URL representa a localização do recurso, enquanto URI representa o nome do recurso. URL é um tipo de URI.
URLs só podem conter caracteres do conjunto ASCII, logo, quando aparecem caracteres fora deste conjunto, é necessário codificá-los. Além disso, URLs contêm alguns caracteres reservados, como :, /, &, que também devem ser codificados para evitar confusão na interpretação da URL.
Ao codificar URLs, os caracteres são representados por sua codificação percentual (%). As regras específicas de codificação podem ser encontradas aqui.
Em Javascript, pode-se usar encodeURIComponent e decodeURIComponent para codificar e decodificar URLs.