it-swarm-pt.tech

Melhor maneira de converter arquivos de texto entre conjuntos de caracteres?

Qual é a ferramenta ou método mais rápido e fácil para converter arquivos de texto entre conjuntos de caracteres?

Especificamente, eu preciso converter de UTF-8 para ISO-8859-15 e vice-versa.

Tudo vai bem: os one-liners em sua linguagem de script favorita, ferramentas de linha de comando ou outros utilitários para sistemas operacionais, sites, etc.

Melhores soluções até agora:

No Linux/UNIX/OS X/cygwin:

  • Gnu iconv sugerido por Troels Arvin é melhor usado como um filtro. Parece estar universalmente disponível. Exemplo:

    $ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
    

    Como apontado por Ben , existe um conversor online usando iconv .

  • Gnu recode ( manual ) sugerido por Cheekysoft irá converter um ou vários arquivos in-place. Exemplo:

    $ recode UTF8..ISO-8859-15 in.txt
    

    Este usa aliases mais curtos:

    $ recode utf8..l9 in.txt
    

    O Recode também suporta superfícies que pode ser usado para converter entre diferentes tipos de finalização de linha e codificações:

    Converte novas linhas de LF (Unix) para CR-LF (DOS):

    $ recode ../CR-LF in.txt
    

    Arquivo de codificação Base64:

    $ recode ../Base64 in.txt
    

    Você também pode combiná-los.

    Converta um arquivo UTF8 codificado em Base64 com terminações de linha Unix em um arquivo Latin 1 codificado em Base64 com os terminais de linha Dos:

    $ recode utf8/Base64..l1/CR-LF/Base64 file.txt
    

No Windows com Powershell ( Jay Bazuzi ): 

  • PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt

    (Não suporta ISO-8859-15; ele diz que os conjuntos de caracteres suportados são unicode, utf7, utf8, utf32, ascii, bigendianunicode, padrão e oem.)

Editar

Você quer dizer iso-8859-1 support? Utilizar "String" faz isto, e. para vice-versa

gc -en string in.txt | Out-File -en utf8 out.txt

Nota: Os possíveis valores de enumeração são "Desconhecido, Cadeia, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

486
Antti Kissaniemi

Utilitário autônomo approach

iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING  the encoding of the input
-t ENCODING  the encoding of the output

Você não precisa especificar nenhum desses argumentos. Eles serão padronizados para sua localidade atual, que geralmente é UTF-8.

214
Troels Arvin

Experimente o VIM

Se você tem vim você pode usar isto:

Não testado para cada codificação.

A parte legal sobre isso é que você não precisa saber a codificação de origem

vim +"set nobomb | set fenc=utf8 | x" filename.txt

Esteja ciente de que este comando modifica diretamente o arquivo


Explicação parte!

  1. +: Usado pelo vim para inserir diretamente o comando ao abrir um arquivo. Usualmente usado para abrir um arquivo em uma linha específica: vim +14 file.txt
  2. |: Separador de vários comandos (como ; no bash)
  3. set nobomb: no utf-8 BOM
  4. set fenc=utf8: Definir nova codificação para utf-8 doc link
  5. x: Salve e feche o arquivo
  6. filename.txt: caminho para o arquivo
  7. ": qotes estão aqui por causa de pipes. (caso contrário, bash irá usá-los como bash pipe)
79
Boop

No Linux, você pode usar o poderoso comando recode para tentar converter entre os diferentes conjuntos de caracteres, bem como quaisquer problemas de finalização de linha. recode -l mostrará todos os formatos e codificações que a ferramenta pode converter entre. É provável que seja uma lista muito longa.

35
Cheekysoft

íconev (1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

Também existem ferramentas baseadas em ícones em muitos idiomas.

19
Daniel Papasian
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT

A versão mais curta, se você puder assumir que a lista de materiais de entrada está correta:

gc FILE.TXT | Out-File -en utf7 file-utf7.txt
19
Jay Bazuzi

Experimente a função iconv Bash

Eu coloquei isso em .bashrc:

utf8()
{
    iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
    rm $1
    mv $1.tmp $1
}

..o poder converter arquivos assim:

utf8 MyClass.Java
14
Arne Evertsson

Experimente o Notepad ++

No Windows, eu pude usar o Notepad ++ para fazer a conversão de ISO-8859-1 para UTF-8 . Clique em "Encoding" e depois em "Convert to UTF-8".

13
Jeremy Glover

Oneliner usando find, com detecção automática

A codificação de caracteres de todos os arquivos de texto correspondentes é detectada automaticamente e todos os arquivos de texto correspondentes são convertidos para codificação utf-8:

$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;

Para executar estas etapas, um sub Shell sh é usado com -exec, executando um one-liner com o sinalizador -c e passando o nome do arquivo como o argumento posicional "$1" com -- {}. No meio, o arquivo de saída utf-8 é temporariamente chamado converted.

Onde file -bi significa:

  • -b, --brief
    Não anexe nomes de arquivos às linhas de saída (modo breve).

  • -i, --mime
    Faz com que o comando file envie strings de tipo mime em vez das mais tradicionais legíveis para humanos. Assim, pode dizer "text/plain; charset = us-ascii ’em vez de“ texto ASCII ”.

O comando find é muito útil para essa automação de gerenciamento de arquivos.

Clique aqui para mais find galore .

9
Serge Stroobandt

PHP iconv ()

iconv("UTF-8", "ISO-8859-15", $input);

3
user15096

DOS/Windows: use Página de código

chcp 65001>NUL
type ascii.txt > unicode.txt

O comando chcp pode ser usado para alterar a página de códigos. A página de código 65001 é o nome da Microsoft para UTF-8. Depois de definir a página de códigos, a saída gerada pelos seguintes comandos será de página de códigos definida.

2
lalthomas

para gravar o arquivo de propriedades (Java) normalmente eu uso isso no linux (distribuições mint e ubuntu):

$ native2ascii filename.properties

Por exemplo:

$ cat test.properties 
first=Execução número um
second=Execução número dois

$ native2ascii test.properties 
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois

PS: Eu escrevi o número de execução um/dois em portugues para forçar caracteres especiais.

No meu caso, na primeira execução, recebi esta mensagem:

$ native2ascii teste.txt 
The program 'native2ascii' can be found in the following packages:
 * gcj-5-jdk
 * openjdk-8-jdk-headless
 * gcj-4.8-jdk
 * gcj-4.9-jdk
Try: Sudo apt install <selected package>

Quando instalei a primeira opção (gcj-5-jdk) o problema foi finalizado.

Espero que isso ajude alguém.

1
Maciel Bombonato

Minha ferramenta favorita para isso é o Jedit (um editor de texto baseado em Java) que possui dois recursos muito convenientes:

  • Um que permite ao usuário recarregar um texto com uma codificação diferente (e, como tal, controlar visualmente o resultado)
  • Outro que permite ao usuário escolher explicitamente a codificação (e o final da linha char) antes de salvar
0
yota

Use este script Python: https://github.com/goerz/convert_encoding.py Funciona em qualquer plataforma. Requer o Python 2.7.

0
kinORnirvana

Com Ruby:

Ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"

Fonte: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences

0
Dorian

Basta alterar a codificação do arquivo carregado no IDE do IntelliJ IDEA, à direita da barra de status (abaixo), onde o conjunto de caracteres atual é indicado. Ele pede para recarregar ou converter, use o Convert. Certifique-se de que você fez o backup do arquivo original com antecedência.

0
Nikolai Varankine