¿La mejor manera de convertir archivos de texto entre conjuntos de caracteres?
¿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.
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.
Prueba VIM
Si tienes vim
puedes 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!
+
: 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
|
: Separador de múltiples comandos (como;
en bash)set nobomb
: sin lista de materiales utf-8set fenc=utf8
: Establezca una nueva codificación en el enlace del documento utf-8x
: Guardar y cerrar archivofilename.txt
: ruta al archivo"
: las citas están aquí por las tuberías. (de lo contrario, bash los usará como canalización de bash)
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.
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
iconov(1)
iconv -f FROM-ENCODING -t TO-ENCODING file.txt
También existen herramientas basadas en iconv en muchos idiomas.