• Publicidad

Problema con la codificación de los ficheros

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Problema con la codificación de los ficheros

Notapor thiseyramo » 2009-10-02 15:52 @703

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.
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Publicidad

Re: Problema con la codificación de los ficheros

Notapor explorer » 2009-10-02 16:14 @718

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con la codificación de los ficheros

Notapor thiseyramo » 2009-10-02 16:31 @730

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...
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Re: Problema con la codificación de los ficheros

Notapor thiseyramo » 2009-10-02 17:31 @772

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:
Sintáxis: [ Descargar ] [ Ocultar ]
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);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


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
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Re: Problema con la codificación de los ficheros

Notapor explorer » 2009-10-02 17:42 @779

¿Y el grep()? ¿Para qué está puesto?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con la codificación de los ficheros

Notapor explorer » 2009-10-02 17:56 @789

Pues si sabes que todos los ficheros son iguales, podrías crear el siguiente programita:

Sintáxis: [ Descargar ] [ Ocultar ]
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";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con la codificación de los ficheros

Notapor thiseyramo » 2009-12-07 14:36 @650

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?
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Re: Problema con la codificación de los ficheros

Notapor explorer » 2009-12-07 14:43 @655

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 & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con la codificación de los ficheros

Notapor thiseyramo » 2009-12-07 14:45 @656

Excelente, muchas gracias...

Salu2

ThiseyRamo
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados