Como converter GBK em UTF-8 em um diretório de codificação mista?

1

Histórico:

Você pode pular esta seção, caso não esteja interessado.

Eu costumo fazer backup do meu cartão MicroSD do meu celular, com o comando sudo dd if=/dev/sdc1 of=~/Document/Cell\ Phone\ Files/MicroSD_Backup/$(date +%y-%m-%d).img depois de conectar o cartão MicroSD ao meu PC com o leitor de cartão.

Existe apenas uma partição no meu cartão MicroSD e o seu sistema de arquivos é fat32 . E a codificação padrão é GBK . Assim, o nome do arquivo chinês é codificado com GBK, enquanto o nome de arquivo em inglês é codificado com ASCII.

Depois de ter feito a última imagem do cartão MicroSD, quero formatá-lo e excluir alguns arquivos inúteis na imagem mais recente.

Descrição:

O arquivo img contém arquivos com gbk filename e ascii filename, enquanto a codificação padrão do meu PC é UTF-8. Eu quero converter esses nomes de arquivos GBK para UTF-8, mas eu me preocupo com os arquivos com um nome ASCII que ficarão truncados com o comando em execução convmv --notest -f gbk -t utf-8 * no diretório montado do arquivo de imagem.

Pergunta:

É possível descobrir esses arquivos com gbk filename e canalizar seu caminho para o comando convmv ? Portanto, esses arquivos com nomes de arquivos ASCII podem sobreviver.

    
por TJM 19.06.2016 / 13:05

1 resposta

1

Obrigado pela sugestão do @SiyuanRen. convmv pode lidar com a situação da bagunça, mantendo os ascii inalterados, o que evita confusões.

O comando convmv -f gbk -t utf8 * funciona bem sob essa circunstância.

A propósito, outra solução é usar -o loop,utf8 durante a montagem de arquivos de imagem, ou apenas usar udisksctl , que pode lidar automaticamente com a codificação de nomes de arquivos.

P.S. todo o caminho para usar udisksctl é

# losetup --fine --show /path-to-img-file
$ udisksctl -b /the-loop-file-showed-after-former-command

Em seguida, insira a senha da sua conta e ela mostrará onde ela está montada /

    
por 19.06.2016 / 14:03