Eu gostaria de salvar este arquivo com esta URL " http://pti.regione.sicilia.it/portal/page/portal/PIR_PORTALE/PIR_LaStrutturaRegionale/PIR_AssessoratoEconomia/PIR_DipBilancioTesoro/PIR_Areetematiche/PIR_ServizioStatistica/PIR_1839271.4501140784/PIR_idatidellaSi %20settore%20sanit%E0.csv " usando seu nome de origem, mas salvando-o aplicando a decodificação aos caracteres codificados de URL que possui.
O nome que temos na URL é spesa%20del%20settore%20sanit%E0.csv
, gostaria de convertê-lo programaticamente em spesa del settore sanità.csv
. No nome da fonte temos %20
que é um espaço e %E0
que é à
.
Como fazer essa conversão de nome?
Eu poderia criar uma lista de pesquisa e substituição a partir desta tabela , mas imagino que exista um utilitário, uma biblioteca que possa fazer isso por mim. No entanto, não encontro uma maneira adequada de fazer isso usando simplesmente wget ou curl.
obrigada
Mais geralmente do que apenas
wget
:A
unvis
ferramenta faz isso, com a-h
opção de especificar a codificação percentual. (As versões OpenBSD e MacOS da ferramenta não possuem isso, note.)Seu nome codificado por porcentagem não está em UTF-8, aviso.
Leitura adicional
unvis
. Manual de Comandos Gerais do FreeBSD . 2010-11-27.unvis
. Manual de Comandos Gerais do OpenBSD . 2013-08-12.Se o seu Wget for construído com suporte a IRI, ele lidará com esse caso automaticamente.
Dê uma olhada no seu
wget --version
. O meu mostra isso:A parte importante para você aqui é o
+iri
. A maioria das distribuições deve compilá-lo com o IRI habilitado por padrão.EDIT: Parece que o servidor neste caso envia o nome do arquivo codificado em latin-1. Enquanto a suposição padrão é sempre utf-8. Idealmente, o servidor deve enviar um
Content-Disposition
cabeçalho para mencionar isso. No entanto, pode ser tratado pelo Wget se você passar a--remote-encoding=latin1
opção para ele.