it-swarm-es.tech

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

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

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

Todo vale: una sola línea en su lenguaje de scripting 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 es el mejor uso como filtro . Parece estar universalmente disponible. Ejemplo:

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

    Como lo señala Ben , hay un convertidor en línea que usa iconv .

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

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

    Éste usa alias más cortos:

    $ recode utf8..l9 in.txt
    

    Recode también admite superficies que se puede usar para convertir entre diferentes tipos de líneas y codificaciones finales:

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

    $ recode ../CR-LF in.txt
    

    Base64 codifica el archivo:

    $ recode ../Base64 in.txt
    

    También puedes combinarlos.

    Convierta un archivo UTF8 codificado en Base64 con terminaciones de línea Unix en un archivo Latin 1 codificado en Base64 con terminaciones 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 hay compatibilidad con ISO-8859-15; dice que los conjuntos de caracteres compatibles son Unicode, utf7, utf8, utf32, ascii, bigendianunicode, predeterminado y OEM).

Editar

¿Quiere decir soporte iso-8859-1? Usando "String" hace esto, por ejemplo. para viceversa

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

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

495
Antti Kissaniemi

Utilidad independiente enfoque

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 tienes que especificar ninguno de estos argumentos. Se establecerán de forma predeterminada en su configuración regional actual, que suele ser UTF-8.

220
Troels Arvin

Prueba vim

Si tienes vim puedes usar esto:

No probado para cada codificación.

La mejor parte de esto es que no tienes que saber la codificación de origen

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

Tenga en cuenta que este comando modifica directamente el archivo.


Parte explicacion

  1. +: vim lo utiliza para ingresar directamente el comando al abrir un archivo. Usualmente 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: no utf-8 BOM
  4. set fenc=utf8: Establezca la nueva codificación en utf-8 doc link
  5. x: Guardar y cerrar archivo
  6. filename.txt: ruta al archivo
  7. ": qotes están aquí debido a las tuberías. (de lo contrario, bash los usará como tubo bash)
80
Boop

Bajo Linux puede usar el poderoso recode comando para intentar convertir entre los diferentes conjuntos de caracteres, así como cualquier problema de final de línea. recode -l te mostrará todos los formatos y codificaciones que la herramienta puede convertir. Es probable que sea una lista MUY larga.

36
Cheekysoft

iconv (1)

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

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

20
Daniel Papasian
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 entrada de la lista de materiales es correcta:

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

Prueba la función iconv Bash

He puesto esto en .bashrc:

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

..para poder convertir archivos así:

utf8 MyClass.Java
16
Arne Evertsson

Prueba Bloc de notas ++

En Windows pude usar Notepad ++ para hacer la conversión de ISO-8859-1 a UTF-8 . Haga clic en "Encoding" y luego en "Convert to UTF-8".

13
Jeremy Glover

Oneliner utilizando find, con detección automática.

La codificación de caracteres de todos los archivos de texto coincidentes se detecta automáticamente y todos los archivos de texto coincidentes se convierten a codificación 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 realizar estos pasos, se utiliza un sub Shell sh con -exec, ejecutando una sola línea con el indicador -c, y pasando el nombre de archivo como el argumento posicional "$1" con -- {}. En medio, el archivo de salida utf-8 se llama temporalmente converted.

Por el cual file -bi significa:

  • -b, --enuncia
    No agregue nombres de archivos a las líneas de salida (modo breve).

  • -i, --mime
    Hace que el comando de archivo genere cadenas de tipo mime en lugar de las más tradicionales legibles por humanos. Así puede decir ‘texto/llano; charset = us-ascii ’en lugar de" texto ASCII ".

El comando find es muy útil para dicha automatización de administración de archivos.

Haga clic aquí para más find en abundancia .

9
Serge Stroobandt

PHP iconv ()

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

3
user15096

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

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

El comando chcp se puede usar para cambiar la página de códigos. La página de códigos 65001 es el nombre de Microsoft para UTF-8. Después de configurar la página de códigos, la salida generada por los siguientes comandos será del conjunto de páginas de códigos.

2
lalthomas

para escribir el archivo de propiedades (Java), normalmente lo uso en linux (distribuciones mint y ubuntu):

$ native2ascii filename.properties

Por ejemplo:

$ 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

PD: escribí la Ejecución número uno/dos en portugues para forzar caracteres especiales.

En mi caso, en primera ejecución recibí este mensaje:

$ 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>

Cuando instalé la primera opción (gcj-5-jdk) el problema se terminó.

Espero que esto ayude a alguien.

1
Maciel Bombonato

Mi herramienta favorita para esto es Jedit (un editor de texto basado en Java) que tiene dos características muy convenientes:

  • Una que permite al usuario recargar un texto con una codificación diferente (y, como tal, controlar visualmente el resultado)
  • Otro que permite al usuario elegir explícitamente la codificación (y el carácter de fin de línea) antes de guardar
0
yota

Use este script de Python: https://github.com/goerz/convert_encoding.py Funciona en cualquier plataforma. Requiere Python 2.7.

0
kinORnirvana

Con Ruby:

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

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

0
Dorian

Simplemente cambie la codificación del archivo cargado en IntelliJ IDEA IDE, a la derecha de la barra de estado (parte inferior), donde se indica el conjunto de caracteres actual. Se le pide que vuelva a cargar o convertir, utilice convertir. Asegúrese de hacer una copia de seguridad del archivo original por adelantado.

0