Pergunta

Estou baixando via FTP alguns arquivos com nomes chineses (BIG5 codificados) e o Filezilla exibe esses nomes de arquivos como lixo (pois o FTP não pode lidar com nenhuma codificação além do ASCII e UTF-8, como menos os padrão compatíveis).

Dado um nome de arquivo com caracteres iluminados, é possível reparar a codificação e obter uma string de nome de arquivo adequado, já que eu já conheço a codificação da fonte? O cliente FTP interpretará mal o BIG5 como UTF-8 inserirá bytes que dificultam a conversão para o BIG5?

Minhas etapas propostas (em Java): 1. Obtenha o nome do arquivo ilegal usando o objeto de arquivo. 2. GetBytes usando o UTF-8. 3. Crie uma nova string usando esses bytes no BIG5. 4. Escreva o nome do arquivo decodificado de volta ao arquivo.

O método acima funcionará?

Foi útil?

Solução

Nem toda sequência de bytes é uma string ASCII ou UTF-8 válida, por isso é bem provável que alguns dos bytes tenham sido descartados, convertidos para o caractere de substituição, ou de outra forma irreversivelmente mutilado. Parece que você não poderá recuperar os nomes de arquivos originais se eles tiverem sido modificados pelo FileZilla para se tornar corretamente formado UTF-8 ou ASCII.

Você pode ter sorte de poder obter uma certa porcentagem dos personagens originais de volta, onde eles foram válidos BIG5 e UTF-8 válidos, mas duvido que você possa recuperar o nome do arquivo inteiro.

Você pode postar alguns exemplos de seus nomes de arquivos distorcidos (como bytes crus codificados em hexadecimal) para obter uma resposta mais definitiva. Dessa forma, podemos ver exatamente qual é o dano.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top