이 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_idatidellaSicilia/s 페사 %2 0del%20settore%20sanit%E0.csv" 소스 이름을 사용하여 저장하되, URL 인코딩 문자에 디코딩을 적용합니다.
URL의 이름은 spesa%20del%20settore%20sanit%E0.csv
이며 프로그래밍 방식으로 로 변환하고 싶습니다 spesa del settore sanità.csv
. 소스 이름에 %20
공백이 %E0
있습니다 à
.
이 이름 변환을 수행하는 방법은 무엇입니까?
여기에서 검색 및 바꾸기 목록을 만들 수 있습니다.테이블하지만 저는 이 작업을 수행할 수 있는 유틸리티, 즉 라이브러리를 갖고 싶습니다. 그러나 단순히 wget이나 컬을 사용하여 이 작업을 수행하는 올바른 방법을 찾지 못했습니다.
감사해요
답변1
다음보다 더 일반적으로 wget
:
도구 는 백분율 인코딩 옵션을 지정하여 이를 수행 unvis
할 수 있습니다 . -h
(이 도구의 OpenBSD 및 MacOS 버전에는 이 기능이 없습니다.)
백분율로 인코딩된 이름은 UTF-8 형식이 아닙니다.
% printf '%s' 'spesa%20del%20settore%20sanit%E0.csv' unvis-h|hexdump-C 00000000 73 70 65 73 61 20 64 65 6c 20 73 65 74 74 6f 72 |설치자| 00000010 65 20 73 61 6e 69 74 e0 2e 63 73 76 |e 건강..csv| 0000001c % printf '%s\n' 'spesa%20del%20settore%20sanit%E0.csv' unvis-h -f 라틴어 1 spesa del settore sanità.csv %
추가 읽기
답변2
Wget이 IRI 지원으로 구축된 경우 자동으로 이 상황을 처리합니다.
당신의 것을 보세요 wget --version
:
GNU Wget 1.20.1.7-5dce-dirty built on linux-gnu.
-cares +digest +gpgme +https +ipv6 +iri +large-file +metalink +nls
+ntlm +opie +psl +ssl/gnutls
여기서 중요한 부분은 +iri
대부분의 배포판이 기본적으로 IRI를 활성화하여 이를 컴파일해야 한다는 것입니다.
편집: 이 경우 서버는 latin-1 인코딩으로 파일 이름을 보내는 것 같습니다. 그리고 기본 가정은 항상 utf-8입니다. 이상적으로는 서버가 Content-Disposition
이를 언급하는 헤더를 보내야 합니다. 하지만 Wget에 옵션을 전달하면 Wget에서 처리할 수 있습니다 --remote-encoding=latin1
.