¿La mejor manera de convertir archivos de texto entre conjuntos de caracteres?

Resuelto Antti Kissaniemi asked hace 16 años • 0 respuestas

¿Cuál es la herramienta o método más rápido y sencillo para convertir archivos de texto entre conjuntos de caracteres?

Específicamente, necesito convertir de UTF-8 a ISO-8859-15 y viceversa.

Todo vale: frases ingeniosas en su lenguaje de programación favorito, herramientas de línea de comandos u otras utilidades para sistemas operativos, sitios web, etc.

Las mejores soluciones hasta ahora:

En Linux/UNIX/OS X/cygwin:

  • Gnu iconv sugerido por Troels Arvin se utiliza mejor como filtro . Parece estar disponible universalmente. Ejemplo:

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

    Como señaló Ben , existe un convertidor en línea que utiliza iconv .

  • La recode ( manual ) sugerida por Cheekysoft convertirá uno o varios archivos en el lugar . Ejemplo:

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

    Este usa alias más cortos:

      $ recode utf8..l9 in.txt
    

    Recode también admite superficies que se pueden utilizar para convertir entre diferentes tipos de finales de línea y codificaciones:

    Convertir nuevas líneas de LF (Unix) a CR-LF (DOS):

      $ recode ../CR-LF in.txt
    

    Archivo de codificación Base64:

      $ recode ../Base64 in.txt
    

    También puedes combinarlos.

    Convierta un archivo UTF8 codificado en Base64 con finales de línea Unix a un archivo Latin 1 codificado en Base64 con finales de línea Dos:

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

En Windows con Powershell ( Jay Bazuzi ):

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

(Sin embargo, no es compatible con ISO-8859-15; dice que los conjuntos de caracteres admitidos son unicode, utf7, utf8, utf32, ascii, bigendianunicode, default y oem).

Editar

¿Te refieres al soporte iso-8859-1? El uso de "String" hace esto, por ejemplo, al revés

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

Nota: Los posibles valores de enumeración son "Desconocido, Cadena, Unicode, Byte, BigEndianUnicode, UTF8, UTF7, Ascii".

  • CsCvt: el convertidor de conjuntos de caracteres de Kalytta es otra excelente herramienta de conversión basada en línea de comandos para Windows.
Antti Kissaniemi avatar Sep 16 '08 00:09 Antti Kissaniemi
Aceptado

Enfoque de servicios públicos independientes

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

No es necesario especificar ninguno de estos argumentos. De forma predeterminada, utilizarán su configuración regional actual, que suele ser UTF-8.

Troels Arvin avatar Sep 15 '2008 17:09 Troels Arvin

Prueba VIM

Si tienes vimpuedes usar esto:

No probado para todas las codificaciones.

Lo bueno de esto es que no es necesario conocer la codificación fuente.

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

Tenga en cuenta que este comando modifica directamente el archivo


Parte de explicación!

  1. +: Utilizado por vim para ingresar directamente el comando al abrir un archivo. Generalmente se usa para abrir un archivo en una línea específica:vim +14 file.txt
  2. |: Separador de múltiples comandos (como ;en bash)
  3. set nobomb: sin lista de materiales utf-8
  4. set fenc=utf8: Establezca una nueva codificación en el enlace del documento utf-8
  5. x: Guardar y cerrar archivo
  6. filename.txt: ruta al archivo
  7. ": las citas están aquí por las tuberías. (de lo contrario, bash los usará como canalización de bash)
Boop avatar Sep 30 '2015 08:09 Boop

En Linux, puede utilizar el muy potente comando de recodificación para intentar convertir entre los diferentes conjuntos de caracteres, así como cualquier problema de final de línea. recode -l le mostrará todos los formatos y codificaciones entre los que la herramienta puede convertir. Es probable que sea una lista MUY larga.

Cheekysoft avatar Sep 15 '2008 17:09 Cheekysoft
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT

La versión más corta, si puede asumir que la lista de materiales ingresada es correcta:

gc FILE.TXT | Out-File -en utf7 file-utf7.txt
Jay Bazuzi avatar Sep 15 '2008 17:09 Jay Bazuzi

iconov(1)

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

También existen herramientas basadas en iconv en muchos idiomas.

Daniel Papasian avatar Sep 15 '2008 17:09 Daniel Papasian