Converter codificação de arquivo de texto

13

Freqüentemente encontro arquivos de texto (como arquivos de legenda em meu idioma nativo, Persa ) com problemas de codificação de caracteres. Esses arquivos são criados no Windows e salvos com uma codificação inadequada (parece ser ANSI), que parece rabugenta e ilegível, assim:

NoWindows,pode-seconsertarissofacilmenteusandoo Notepad ++ para converter a codificação para UTF-8, como abaixo:

Eoresultadolegívelcorretoéassim:

Eu procurei muito por uma solução semelhante no GNU / Linux, mas infelizmente as soluções sugeridas (por exemplo, esta pergunta ) não funciona. Acima de tudo, vi pessoas sugerirem iconv e recode , mas não tive sorte com essas ferramentas. Eu testei muitos comandos, incluindo os seguintes, e todos falharam:

$ recode ISO-8859-15..UTF8 file.txt
$ iconv -f ISO8859-15 -t UTF-8 file.txt > out.txt
$ iconv -f WINDOWS-1252 -t UTF-8 file.txt > out.txt 

Nada disso funcionou!

Estou usando o Ubuntu-14.04 e estou procurando uma solução simples (GUI ou CLI) que funcione exatamente como o Notepad ++.

Um aspecto importante de ser "simples" é que o usuário não é obrigado a determinar a codificação de origem; em vez disso, a codificação de origem deve ser detectada automaticamente pela ferramenta e somente a codificação de destino deve ser fornecida pelo usuário. Mas, no entanto, também ficarei feliz em saber sobre uma solução de trabalho que requer que a codificação de origem seja fornecida.

Se alguém precisar de um caso de teste para examinar soluções diferentes, o exemplo acima é acessível por meio deste link .

    
por Seyed Mohammad 14.04.2015 / 13:38

6 respostas

0

A solução de trabalho que encontrei está usando o editor de texto Código do Microsoft Visual Studio , que é o Freeware e está disponível para Linux.

Abra o arquivo que você deseja converter sua codificação em VS-Code. Na parte inferior da janela, há alguns botões. Um deles está relacionado à codificação do arquivo, conforme mostrado abaixo:

Clicarnestebotãoexibeummenususpensoqueincluidoisitens.Apartirdestemenu,selecioneaopção"Reabrir com Codificação", como abaixo:

Issoabriráoutromenuqueincluiumalistadecodificaçãodiferente,conformemostradoabaixo.Agoraselecione"Árabe (Windows 1256)":

Issoconsertaráotextosemsentidoassim:

Agora,cliquenobotãodecodificaçãonovamentee,destavez,selecioneaopção"Salvar com codificação", da seguinte forma:

Enonovomenu,selecioneaopção"UTF-8":

IssosalvaráoarquivocorrigidousandoacodificaçãoUTF-8:

Feito! :)

    
por Seyed Mohammad 05.10.2015 / 18:02
9

Esses arquivos do Windows com texto persa são codificados em Windows-1256 . Por isso, pode ser decifrado por um comando similar ao OP, mas com diferentes conjuntos de caracteres. A saber:

recode Windows-1256..UTF-8 <Windows_file.txt > UTF8_file.txt
(denunciado por reclamações de pôster original; ver comentários)

iconv -f Windows-1256 Windows_file.txt > UTF8_file.txt

Este assume que a variável de ambiente LANG está definida para um código do idioma UTF-8. Para converter em qualquer codificação (UTF-8 ou outra), independentemente da localidade atual, pode-se dizer:

iconv -f Windows-1256 Windows_file.txt -t ${output_encoding} > ${output_file}

O pôster original também é confundido com a semântica de ferramentas de recodificação de texto (recode, iconv). Para a codificação de origem ( source .. ou -f) é necessário especificar a codificação com a qual o arquivo é salvo (pelo programa que o criou). Não alguns (ingênuos) palpites baseados em caracteres mojibake em programas que tentam (mas não conseguem) lê-lo. Tentar o ISO-8859-15 ou o WINDOWS-1252 para um texto persa era obviamente um impasse: essas codificações simplesmente não contêm nenhuma letra persa.

    
por Incnis Mrsi 18.08.2015 / 15:38
1

Além de iconv , que é uma ferramenta muito útil, seja ela própria ou em um script, existe uma solução realmente simples que eu encontrei tentando descobrir o mesmo problema para os charsets gregos (Windows-1253 + ISO-8859- 7).

Tudo o que você precisa fazer é abrir o arquivo de texto através do diálogo "Abrir" do Gedit e não clicando duas vezes nele . Na parte inferior da caixa de diálogo, há um menu suspenso para Codificação, que é definido como "Detectado automaticamente" . Altere-o para "Windows-125x" ou outro conjunto de código adequado e o texto ficará perfeitamente legível no Gedit. Você pode salvá-lo usando a codificação UTF-8, apenas para ter certeza de que você não terá o mesmo problema novamente no futuro ...

    
por Giorgos_tph 15.04.2017 / 02:12
1

Como uma solução complementar ao problema, preparei um script Bash útil com base no comando iconv da resposta do Incnis Mrsi :

#!/bin/bash

if [ $# -lt 1 ]
then
   echo 'Specify at least one file to fix.'
   exit 1
fi

# Temp file to store conversion attempt(s).
tmp='tmp.fixed'

for file in "$@"
do
  # Try to fix the file encoding.
  if iconv -f WINDOWS-1256 "$file" -t UTF-8 > $tmp; then
    echo "Fixed: '$file'"
    cat $tmp > "$file"
  else
    echo "Failed to fix: '$file'"
  fi
done
rm $tmp

Salve este script como fix-encoding.sh , conceda permissão de execução usando chmod +x fix-encoding.sh e use-o da seguinte forma:

./fix-encoding.sh myfile.txt my2ndfile.srt my3rdfile.sub

Este script tentará corrigir a codificação de qualquer número de arquivos que é fornecido como entrada. Observe que os arquivos serão corrigidos no local, portanto, o conteúdo será sobrescrito.

    
por Seyed Mohammad 20.08.2015 / 14:02
1

Eu não sei se isso funciona com o Farsi: eu uso o Gedit, ele dá uma falha na codificação incorreta, e eu posso escolher o que eu quero traduzir para o UTF-8, é apenas o formato de texto não iluminado, mas aqui é uma captura de tela!

Desculpe, finalmente consegui ler meus arquivos de texto, então agora eles foram convertidos.

Adorei o notepad ++ também, ainda falta.

    
por Ken Mollerup 14.04.2015 / 20:02
1

Se você gosta de trabalhar em GUI em vez de CLI, como eu:

  1. Abrir arquivo com o Geany (editor)
  2. Ir para o menu Arquivo - > Atualizar como
  3. Escolha a codificação assumida para alterar as sem sentido em caracteres identificáveis em seu idioma. Por exemplo, para ler subs gregos eu recarregaria como West European - > Grego (Windows-1253)
  4. Vá para o menu Documento > Definir codificação - > Unicode - > UTF-8
  5. Salvar
por Christos 20.04.2017 / 23:36

Tags