Filenames
如何修復文件名編碼
我用
wget
.該網站是德語的,其中一些頁面的 URL 中有 Ü,ü,Ö,ö,Ä,ä,ß。
現在有些文件的名字很奇怪。
例如一個文件被稱為
mirror.de/�%9Cbersicht.html
有沒有辦法執行一個將奇怪的編碼更改為正確編碼的命令?
在範例情況下,我希望以下是有效結果
mirror.de/Uebersicht.html
編輯: L 的輸出
C_CTYPE=C ls | grep bersicht.html | od -t x1
:0000000 42 69 6e 61 72 79 20 66 69 6c 65 20 28 73 74 61 0000020 6e 64 61 72 64 20 69 6e 70 75 74 29 20 6d 61 74 0000040 63 68 65 73 0a 0000045
如果您只是解碼 %XX URI 編碼,您可能會得到 UTF-8 編碼的字元。在
zsh
:autoload zmv LC_ALL=C zmv '(**/)(*%*)' '$1${2//(#b)%(??)/${(#):-0x$match}}'
如果正如 Gilles 所指出的那樣,該替換字元是 0xc3 字節(在 iso8859-1 中是一個字母,可以解釋為什麼它沒有經過 URI 編碼,而 0x9c 在 iso8859-1 中是無效的),那麼上面的命令會將您的文件名更改為
Übersicht.html
在將
%XX
URI 編碼解碼為有效的 UTF-8 後,您還可以使用convmv -f utf-8 -t latin-1
轉換文件名的字元集。如果不可用,這可能是一個有用的替代解決方案
zsh
。