Espaços, acentos e símbolos em ligações e nomes de ficheiros: codificar sem partir

Suporte e Conta·· 25 visualizações· 4 min de leitura

A resposta curta: um endereço só pode levar um conjunto limitado de caracteres. Tudo o resto (um espaço, uma letra acentuada, muitos símbolos) viaja como % seguido de dois algarismos hexadecimais: é a codificação por percentagem. Um espaço passa a %20; um «é» passa a %C3%A9 (os seus dois bytes em UTF-8). O navegador faz isto sozinho e mostra-lhe a versão legível na barra, e é por isso que os problemas só aparecem quando a ligação é copiada para um e-mail, para uma mensagem, para código, ou quando o nome é de um ficheiro. E há símbolos que têm uma função no endereço (? # & / % +): num nome de ficheiro, partem a ligação.

Os caracteres que dão problemas

Carácter e codificação O que acontece se ficar como está
Espaço: %20 (ou + nos parâmetros de um formulário) A ligação é cortada no espaço quando colada num e-mail ou numa conversa. «tabela de preços.pdf» chega como «tabela».
Letras acentuadas: é fica %C3%A9 No navegador costuma funcionar, mas falha em programas antigos, em alguns e-mails e quando o nome foi gravado noutra codificação: acentos que viram símbolos estranhos.
Cardinal: # fica %23 Tudo o que vem depois é tratado como âncora e não chega ao servidor: «factura#12.pdf» dá 404.
Ponto de interrogação: ? fica %3F O resto do nome passa a ser lido como parâmetros.
E comercial: & fica %26 Dentro de um valor, parte o parâmetro em dois.
Mais: + fica %2B Nos parâmetros, muitos programas lêem o «+» como espaço (o PHP, por exemplo, ao preencher $_GET).
Percentagem: % fica %25 Um «%» solto confunde a descodificação.

Nomes e ligações que não se partem

1 Dê nome aos ficheiros antes de os enviar para o site: minúsculas, sem acentos, hífen em vez de espaço, só letras, números, hífens e o ponto da extensão. «Tabela de Preços (final).pdf» passa a tabela-de-precos-final.pdf. O mesmo para imagens: texto alternativo e nomes das imagens.
2 Mudar o nome de um ficheiro que já está ligado parte a ligação antiga. Actualize as ligações que apontam para ele, ou crie um redireccionamento do nome velho para o novo: redireccionamentos 301.
3 Teste a ligação fora do navegador: cole-a numa mensagem de texto simples e abra-a numa janela privada. Se se corta num espaço, num acento ou num «#», é a codificação.
4 Se programa, codifique cada valor e não o endereço inteiro. No PHP, rawurlencode() para um pedaço do caminho e http_build_query() (ou urlencode()) para os parâmetros. No JavaScript, encodeURIComponent() para um valor e encodeURI() para um endereço já montado.
5 Não codifique duas vezes. Se uma ligação mostra %2520, o «%» de um %20 foi codificado outra vez. Corrige-se no sítio que gera a ligação (o código, o plugin, a folha de cálculo), não mudando o nome do ficheiro.
6 Dois ficheiros com o mesmo nome à vista e o site só encontra um? A mesma letra acentuada pode ser gravada de duas formas (um carácter só, ou a letra mais o acento à parte), conforme o sistema onde o ficheiro foi criado. Parecem iguais e não são. Mais uma razão para não usar acentos em nomes de ficheiros.
Em servidores Linux, o nome conta letra a letra. «Foto.JPG» e «foto.jpg» são ficheiros diferentes, e um nome com espaço ou acento que funcionava no seu computador pode dar 404 no site. Se uma imagem ou um PDF deixou de abrir depois de o enviar, compare o nome no Gestor de Ficheiros com o que está na ligação: erro 404 numa página que devia existir.
Acentos no nome de domínio são outra mecânica (o domínio é convertido para uma forma que começa por xn--), com regras próprias: acentos e caracteres especiais nos nomes de domínio.

Um ficheiro está no site e a ligação não o abre? Envie-nos a ligação exacta e o nome do ficheiro tal como aparece no Gestor de Ficheiros.

Abrir pedido de suporte

VEJA TAMBÉM

As partes de um endereço web: protocolo, domínio, porta, caminho, parâmetros e âncora

Texto alternativo e nomes das imagens: o que escrever e o que evitar

Acentos que viram símbolos estranhos no site: UTF-8 do ficheiro à base de dados

Acentos e caracteres especiais nos nomes de domínio: o que é permitido, e o que fazer em alternativa

Erro 404 numa página que devia existir: as causas, por ordem

Como deve ser o endereço de uma página, e como mudar um mau sem estragar nada

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
Esta resposta foi útil? A sua resposta ajuda-nos a melhorar este artigo.