추가 읽기

추가 읽기

이 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
%

추가 읽기

  • unvis. FreeBSD 공통 명령 매뉴얼. 2010년 11월 27일.
  • unvis.OpenBSD 공통 명령 매뉴얼. 2013년 8월 12일.

답변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.

관련 정보