Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Avanzado » Problema con la codificación de los ficheros  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 9 mensajes ] 
 
Nota 2009-10-02 15:52 @703

Perlero Nuevo
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia
Mensajes: 14
Problema con la codificación de los ficheros
Hola a todos, he estado dando vueltas por Internet y por la documentación de Perl, pero no encuentro algo que me permita identificar el charset de un fichero para verificar si tiene uno u otro y cambiarlo en caso de ser necesario.

Me explico, tengo varios ficheros que tengo que procesar, pero algunos vienen en UTF-8 y otros en ISO-8859-15, el tema es que en UTF-8 no me sirven, tengo que pasarlos todos a ISO-8859-15 antes de poderlos procesar. ¿Existe alguna manera de hacer eso sin necesidad de abrir el fichero con una codificación y luego crear uno nuevo con la nueva codificación?

Saludos a todos y gracias de antemano.


Nota 2009-10-02 16:14 @718
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con la codificación de los ficheros
Hay varios módulos que pueden ayudar a esto: Apache::GuessCharset, CharsetDetector y Encode::Guess.

Para ello, puedes leer el fichero en modo crudo (:raw) y luego pasarlo por alguno de estos módulos. Si te fijas en su código, usan estadísticas de presencia de bytes que marcan inicio de secuencia utf8 de carácter acentuado.

P.D. Después de leer con calma el mensaje, me asombra que digas que no te sirva en utf8, cuando la tendencia actual es usar esa codificación para todo.

_________________
JF^D Perl programming


Nota 2009-10-02 16:31 @730

Perlero Nuevo
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia
Mensajes: 14
Re: Problema con la codificación de los ficheros
Gracias por responder... voy a revisar la documentación que me sugieres... y luego pues les cuento.

Y en cuanto a lo de utf-8, jeje, pues el tema es que he estado trabajando en hacer ajustes y adición de algunas funcionalidades a una plataforma que ya está desarrollada y en funcionamiento, de manera que tengo algunas limitaciones en cuanto a que se debe garantizar la compatibilidad de las cosas nuevas con las versiones más viejas de la plataforma; no sé si me hago entender, pero más o menos esa es la razón.

Saludos y de nuevo gracias...


Nota 2009-10-02 17:31 @772

Perlero Nuevo
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia
Mensajes: 14
Re: Problema con la codificación de los ficheros
Hola, finalmente implementé una solución un tanto "machaca" (es decir medio a las patadas, por si para alguien "machaco"significa otra cosa :D ), me di cuenta que los ficheros siempre son uft-8 ya que son generados siempre de la misma manera; entonces lo que hice fue lo siguiente:

Nota aclaratoria: Seguramente no sea la mejor solución, pero a fin de salir de la urgencia, me funciona... luego busco una mejor alternativa.

Suponiendo que el fichero se llama omar.html, hago lo siguiente:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. open (my $OA, "<:encoding(UTF-8)", "omar.html") or die;
  2. @lines = <$OA>;
  3. close($OA);
  4. open (my $OA2, ">:encoding(iso-8859-15)", "omar.html") or die;
  5. print @lines;
  6. grep{print $OA2 $_}@lines;
  7. close($OA2);


De esa manera sobreescribo el fichero, pero ahora su contenido tiene la codificación que necesitaba... y ya... :lol:

De todas maneras INSISTO, esto es una solución temporal, si encuentro una mejor manera de hacerlo o si hay sugerencias, las tendré en cuenta...

Saludos,

ThiseyRamo


Nota 2009-10-02 17:42 @779
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con la codificación de los ficheros
¿Y el grep()? ¿Para qué está puesto?

_________________
JF^D Perl programming


Nota 2009-10-02 17:56 @789
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con la codificación de los ficheros  RESUELTO
Pues si sabes que todos los ficheros son iguales, podrías crear el siguiente programita:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use open IN => ":utf8", OUT => ":encoding(iso-8859-15)";
  3.  
  4. $nombre = $ARGV[0];
  5.  
  6. print "Transformando $nombre... ";
  7.  
  8. @fichero = <>;
  9.  
  10. open  OUT,">$nombre.new";
  11. print OUT "@fichero";
  12. close OUT;
  13.  
  14. print "Ok\n";

Que, bueno, hace lo mismo que el tuyo :)

Y luego, pasarle el fichero que quieres traducir:

filtro.pl fichero.html

Más información en perldoc open pragma

_________________
JF^D Perl programming


Nota 2009-12-07 14:36 @650

Perlero Nuevo
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia
Mensajes: 14
Re: Problema con la codificación de los ficheros
Hola explorer,

Hasta ahora veo tu respuesta, y me parece excelente, la verdad no soy muy experto en Perl :D y me viene muy bien para mejorar mi código...

Saludos,

ThiseyRamo

P.D: ¿Cómo hago para que me lleguen notificaciones al correo con las respuestas de los temas que he creado :S?


Nota 2009-12-07 14:43 @655
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con la codificación de los ficheros
En el momento de crear un mensaje (o volverle a editar pulsando en el botón de Editar mensaje), puedes indicar, entre las opciones que aparecen debajo de la caja de texto, que quieres "Enviarme un email cuando un mensaje es respondido".

Así recibirás un aviso por cada movimiento del hilo.

Otra opción, es unirte a las fuentes RSS del foro, para recibir las últimas novedades del mismo: http://perlenespanol.com/foro/rss/news/digest/rss.xml

_________________
JF^D Perl programming


Nota 2009-12-07 14:45 @656

Perlero Nuevo
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia
Mensajes: 14
Re: Problema con la codificación de los ficheros
Excelente, muchas gracias...

Salu2

ThiseyRamo


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