codificacion-utf8

Este puede ser un tema nuevo para algunos usuarios, por lo que esta guía se enfocará en hablar sobre cambiar la codificación de archivos a otra codificación distinta. Esto es un concepto necesario para entender bien los que conlleva la codificación UTF-8 en Linux.

Para comenzar, es normal pensar que las computadoras en realidad no comprenden lo que son letras y números como nosotros, ellas solo entiendes bits. Teniendo así dos valores posibles como 0 y 1, verdadero y falso, sí o no. Todo debe estar representado por bits para que la computadora lo entienda.

Sabiendo esto, resulta más fácil entender lo que es la codificación de algún carácter, esto es tan solo una forma de hacer que la computadora entienda, o interprete, “ceros y unos” como un carácter, y un carácter es representado por una línea de números.

En Linux, el comando iconv es utilizado para realizar esta tarea de convertir el código de un texto a otro. Para verificar la codificación de un archivo se utiliza el comando –i o –mime, estos comandos permiten mostrar en pantalla el tipo de código.

file -i Car.java

file -i CarDriver.java

La lógica para aplicar correctamente el commando iconv es la siguiente:

iconv option

iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile

Así, -f o –from-code significa la entrada de la codificación, y –t o –to-encoding especifica la salida de la misma.

Con todo esto en mente podemos proceder a explicar la codificación de UTF-8 a ASCII. Primero hay que comenzar con conocer las codificaciones de los caracteres en el archivo y luego poder ver el contenido del mismo. Así, se podrán convertir todos los archivos a la codificación ASCII. Todo después de haber utilizado el comando iconv, para poder verificar lo que contiene la salida del archivo. Para eso hay que hacer lo siguiente:

file -i input.file

cat input.file

iconv -f ISO-8859-1 -t UTF-8//TRANSLIT input.file -o out.file

cat out.file

file -i out.file

Cabe destacar que, si el comando //IGNORE se añade a to-encoding, los caracteres no pueden ser convertidos y un error se mostrará luego de la conversión. También,  si el comando //TRANSLIT es añadido a to-encoding como en el ejemplo dado (ASCII//TRANSLIT), los caracteres convertidos son transliterados, si es posible, como necesarios.

Esto implicaría que en este evento los caracteres no pueden ser representados como lo que se desea, aunque pueden haber aproximaciones del mismo, inclusive dos. Por lo que, si un carácter no puede ser transliterado, no será reconocido como un objetivo para reemplazo y se mostrará la marca (?) en la salida del archivo.

utf-8

Ahora, para convertir varios archivos a la codificación UTF-8, lo cual es nuestro tema principal, se puede escribir un pequeño Shell llamado encoding.sh, mostrado como:

#!/bin/bash

#enter input encoding here

FROM_ENCODING=”value_here”

#output encoding(UTF-8)

TO_ENCODING=”UTF-8?

#convert

CONVERT=” iconv  -f   $FROM_ENCODING  -t   $TO_ENCODING”

#loop to convert multiple files

for  file  in  *.txt; do

$CONVERT   “$file”   -o  “${file%.txt}.utf8.converted”

done

exit 0

Luego solo hay que guardar el archivo y hacer la escritura ejecutable. Así, se deberán de correr en donde los archivos (*.txt) están localizados.

$ chmod  +x  encoding.sh

$ ./encoding.sh

Por supuesto, también está la posibilidad de utilizar esta escritura para una conversión general de múltiple archivos de una codificación a otra; solo hay que jugar un poco con los valores de FROM_ENCODING y TO_ENCODING, sin olvidar el archivo de salida “${file%.txt}.utf8.converted”.

Si se desea más información al respecto siempre se puede revisar la página de iconv con: man iconv. Y ya todo estaría listo, con la guía proporcionada ya es posible cambiar la codificación de archivos, esto sin duda será de gran ayuda para los usuarios más avanzados, o programadores, cuando necesiten lidiar con algún texto.

 

Fuente: artescritorio

¿Quién está en línea?

Hay 43992 invitados y ningún miembro en línea