wget을 사용하여 유니 코드로 링크를 다운로드하는 방법은 무엇입니까?


14

때로는 링크에 http://www.example.com/файл.zip 과 같은 유니 코드 문자가 포함되어 있습니다 .

브라우저가 브라우저를 가리키면 파일을 файл.zip으로 다운로드하라는 메시지가 표시됩니다. 그러나을 사용하면 wget파일에?, 퍼센트 인코딩 (예 : % D0 % BB) 및 (invalid encoding)파일 이름 뒤의 문자열이 함께 제공됩니다.

wget 또는 기타 명령 줄 트릭에 어떤 매개 변수를 추가하여 Chrome 및 Firefox처럼 동작하고 렌더링 된 링크에 지정된대로 정확하게 파일을 저장합니다 (이 경우 файл.zip)?

솔루션은 명령에 명시 적으로 작성하지 않아도 작동하므로 명시 적 wget -O файл.zip http://www.example.com/файл.zip솔루션은 적합하지 않습니다.

실행하자마자 http://www.example.com/%D1%84%D0%B0%D0%B9%D0%BB.zipwget http://www.example.com/файл.zip 을 검색하려고 시도합니다 . 즉, 링크를 백분율로 변환합니다. 저장하는 이유는 파일 이름이 "적절하게"렌더링되지 않는 이유입니다.

나는 다소 관련이있는 질문을 여기에 올렸는데 , 그 대답은이 질문에 도움이 될 수도 있고 아닐 수도 있습니다.

답변:


3

다음과 같이 대신 curl을 사용할 수 있습니다.

curl -O http://www.example.com/файл.zip

файл.zip에 저장됩니다.


23

wget의 경우 다음을 사용할 수 있습니다.

wget http://www.example.com/файл.zip --restrict-file-names=nocontrol

시스템이 UTF-8 또는 다른 인코딩을 올바르게 처리 할 수있는 경우

마지막으로, 다운로드 한 파일에 % 기호가 남아 있으면 urllib.unquote(filename)% xx 이스케이프를 단일 문자로 대체 하는 Python 모듈 을 사용할 수 있습니다 .


3
이것은 wget으로 수행하는 모든 것들과 (예를 들어 재귀 적으로 다운로드하는 것) 컬 컬 OP에서 수행 될 수 있고 아마도 다른 모든 사람들이 이미 수행했을 것입니다.
Behrooz

--restrict-file-names=nocontrol 파일 링크가 최종이 아닌 경우 에도 유용 할 수 있습니다 .
ipeacocks

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.