Espaços, acentos e símbolos em links e nomes de arquivos: codificar sem partir

Suporte e Conta·· 51 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 porcentagem. 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 o link é copiada para um e-mail, para uma mensagem, para código, ou quando o nome é de um arquivo. E há símbolos que têm uma função no endereço (? # & / % +): num nome de arquivo, partem o link.

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) O link é 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 em outra 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: «fatura#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).
Porcentagem: % fica %25 Um «%» solto confunde a descodificação.

Nomes e links que não se partem

1 Dê nome aos arquivos 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 arquivo que já está ligado parte o link antigo. Atualize os links que apontam para ele, ou crie um redireccionamento do nome velho para o novo: redireccionamentos 301.
3 Teste o link 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 um link mostra %2520, o «%» de um %20 foi codificado outra vez. Corrige-se no lugar que gera o link (o código, o plugin, a folha de cálculo), não mudando o nome do arquivo.
6 Dois arquivos 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 arquivo foi criado. Parecem iguais e não são. Mais uma razão para não usar acentos em nomes de arquivos.
Em servidores Linux, o nome conta letra a letra. «Foto.JPG» e «foto.jpg» são arquivos 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 Gerenciador de Arquivos com o que está no link: 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 arquivo está no site e o link não o abre? Envie-nos o link exata e o nome do arquivo tal como aparece no Gerenciador de Arquivos.

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 arquivo à 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 R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.