Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Intermedio » Codificación de archivos  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 9 mensajes ] 
 
Nota 2011-07-14 12:45 @573

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Codificación de archivos
Muy buenas.

Tengo varios ficheros de texto codificados en UTF-8 y quiero volcar su información un otro fichero que está codificado en Latin-1.

Para poder hacerlo, pongo la siguiente instrucción:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. use open IN => ':encoding(utf-8)', OUT => ':encoding(Latin-1)';


Pero al ejecutar el script, me dan varios errores del siguiente tipo:
Syntax: [ Download ] [ Hide ]
Using text Syntax Highlighting
"... does not map to iso-8859-1 ..."


Por lo tanto, ¿cómo podría pasar el texto de un fichero codificado en UTF-8 a otro codificado en ISO-8859-1 correctamente? Si no pongo la instrucción citada antes, la ejecución del programa no devuelve ningún error, pero los caracteres no los convierte correctamente (al menos en el caso de la "ñ" y las tildes).

¡Muchas gracias!


Nota 2011-07-14 13:47 @615
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Codificación de archivos
No nos das todo el mensaje de error, pero ese mensaje indica que dentro del texto hay un carácter que no se puede mapear a ninguno de los caracteres del iso-8859-1. No sabemos qué carácter es (debería salir justo antes de ese mensaje).

Las opciones que hay para resolver esto depende de lo que quieres hacer con ese carácter extraño.

Te recomiendo que mires la sección Handling Malformed Data, donde podrás elegir qué hacer.

Aquí tienes un ejemplo de un programa que detecta esos casos, y con una subrutina para cambiar esos caracteres por otros.

_________________
JF^D Perl programming


Nota 2011-07-15 04:53 @245

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Codificación de archivos  RESUELTO
Gracias por la respuesta.

Tras darle muchas vueltas, he llegado a la conclusión de que lo más fácil es pasar primero el fichero de origen (en UTF8) a
iso-8859-1 mediante el programa "iconv":

Syntax: [ Download ] [ Hide ]
Using bash Syntax Highlighting
  1. iconv -f UTF8 -t ISO8859-1 fichero_utf8 > fichero_latin1


Para después poder leer y escribir en iso-5559-1:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. use open IN  => ':encoding(Latin-1)', OUT => ':encoding(Latin-1)';


Nota 2011-07-15 06:36 @316
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Codificación de archivos
¿Rendición, eh? :D

Por estos foros hay algunos ejemplos de conversión entre juegos de caracteres.

Yo hubiera usado la función from_to() del módulo Encode. Primero, leer el fichero como una ristra de bytes (sin código), hacer la transformación, y grabarlo de la misma manera (codificación :raw).

_________________
JF^D Perl programming


Nota 2011-07-15 06:40 @320

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Codificación de archivos
Ok, explorer.
Puede que intente lo que sugieres, pero no prometo nada :lol:

De todas formas, no era estrictamente necesario que los ficheros de entrada estuvieran en UTF8, ya que ahora son datos exportados de un CSV. Por lo tanto, se pueden exportar directamente a Latin-1, y listo.

Gracias por la ayuda.


Nota 2011-07-15 07:03 @336
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Codificación de archivos
:!: CSV es un formato, no una codificación.

El fichero puede estar en formato CSV, codificado en UTF8 (o en cualquier otra codificación).

_________________
JF^D Perl programming


Nota 2011-07-15 07:06 @337

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Codificación de archivos
Has malinterpretado mi mensaje (o me he explicado yo mal).
Quería decir que desde el propio CSV tengo la posibilidad de exportar el archivo a distintas codificaciones.


Nota 2011-07-17 19:00 @833
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10249
Re: Codificación de archivos
Según perlutil, la distribución de Perl viene con un programa llamado pinconv, que es una versión en Perl del programa iconv. Y como es un programa en Perl... pues se puede leer su contenido.

Bueno, esto es para las largas tardes del verano :)

_________________
JF^D Perl programming


Nota 2011-07-24 12:04 @545

Perlero Nuevo
Registrado: 2009-04-16 13:59 @624
Mensajes: 41
Re: Codificación de archivos
Buuff deja, que este verano toca currar :)
Gracias!


Responder al tema  [ 9 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO