如何保存網路資源,對 URL 編碼字元應用解碼?
我想用這個 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_idatidellaS %20settore%20sanit%E0.csv " 使用它的源名稱,但保存它,將解碼應用到它擁有的 URL 編碼字元。
我們在 URL 中的名稱是
spesa%20del%20settore%20sanit%E0.csv
,我想以程式方式將其轉換為spesa del settore sanità.csv
. 在源名稱中,我們有%20
一個空格,%E0
即à
.如何進行此名稱轉換?
我可以從這個表開始創建一個搜尋和替換列表,但我想有一個實用程序,一個可以為我做的庫。但是,我沒有找到簡單的 wget 或 curl 的正確方法。
謝謝
如果您的 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
標頭來提及這一點。--remote-encoding=latin1
但是,如果您將選項傳遞給它,它可以由 Wget 處理。
更普遍的不僅僅是
wget
:該
unvis
工具執行此操作,-h
並可選擇指定百分比編碼。(請注意,該工具的 OpenBSD 和 MacOS 版本沒有此功能。)請注意,您的百分比編碼名稱不是 UTF-8。
% printf '%s' 'spesa%20del%20settore%20sanit%E0.csv' | unvis -h | 十六進制轉儲 -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 sanit..csv | 0000001c % printf '%s\n' 'spesa%20del%20settore%20sanit%E0.csv' | unvis -h | iconv -f latin1 衛生部門的支出 %
進一步閱讀