Como corrigir a codificação do nome do arquivo

Como corrigir a codificação do nome do arquivo

Eu descartei um site com wget.

Esse site está em alemão e algumas dessas páginas tinham Ü,ü,Ö,ö,Ä,ä,ß na URL.

Agora, alguns arquivos têm um nome muito estranho.
Por exemplo, um arquivo é chamadomirror.de/�%9Cbersicht.html

Existe uma maneira de executar um comando que altere essa codificação estranha para uma codificação adequada?

No caso de exemplo, eu esperaria o seguinte como resultado válidomirror.de/Uebersicht.html

EDITAR: Saída de 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

Responder1

Provavelmente, se você apenas decodificar as codificações URI% XX, obterá caracteres codificados em UTF-8. Em zsh:

autoload zmv
LC_ALL=C zmv '(**/)(*%*)' '$1${2//(#b)%(??)/${(#):-0x$match}}'

Se, conforme observado por Gilles, esse caractere de substituição for para um byte 0xc3 (que em iso8859-1 é uma letra que explicaria por que não foi codificado em URI, ao contrário de 0x9c, que é inválido em iso8859-1), então o O comando acima mudaria o nome do seu arquivo paraÜbersicht.html

Responder2

Depois de decodificar as %XXcodificações URI para UTF-8 válido, você também poderia ter usado convmv -f utf-8 -t latin-1para converter o conjunto de caracteres do nome do arquivo.

Essa pode ser uma solução alternativa útil se zshnão estiver disponível.

informação relacionada