• Publicidad

Convertidor de Ansi a Unicode?

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Convertidor de Ansi a Unicode?

Notapor Elvin Welten » 2007-03-14 12:24 @558

Saludos a todos. Tengo un problemilla con los distintos tipos de codificación.

He hecho un programejo que se baja desde una URL con el "wget"un archivo determinado que yo renombro poniendole de extension .xml

Funciona perfectamente,el problema es que ese archivo es llamado por un swf y no lo entiende porque el xml viene codificado en código ANSI, si abro el xml y manualmente lo guardo como UNICODE funciona perfectamente pero claro no puedo automatizarlo.

hay alguna manera script ó orden en perl para convertir de ANSI a UNICODE ?He estado buscando y encuentro cosas sobre Unicode pero no doy con la solución

Muchas gracias en adelanto
Elvin Welten
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2007-02-23 12:51 @577

Publicidad

Notapor kidd » 2007-03-14 14:33 @648

Hola:

Te recomiendo que cheques el módulo Encode en CPAN:
http://search.cpan.org/search?mode=module&query=Encode

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-03-14 16:59 @749

No lo he probado, pero quizás con esto también funcione:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use open IN  => ":encoding(iso-8859-1)", OUT => ":utf8";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Actualización: Pues sí... funciona...
Si kk.txt contiene:
Código: Seleccionar todo
áéíóúñÑ

> hexdump -C kk.txt
00000000  e1 e9 ed f3 fa f1 d1 0a                           |........|
00000008
codificado en ansi (realmente iso-8859-1)

Con este programa:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use open IN  => ":encoding(iso-8859-1)", OUT => ":utf8";

open ENTRADA, "<kk.txt";
open SALIDA,  ">kk1.txt";

while ( <ENTRADA> ) {
  print SALIDA;
}

close SALIDA;
close ENTRADA;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
La salida es la misma, pero con caracteres en utf8:
Código: Seleccionar todo
áéíóúñÑ

> hexdump -C kk1.txt
00000000  c3 a1 c3 a9 c3 ad c3 b3  c3 ba c3 b1 c3 91 0a     |...............|
0000000f
Última edición por explorer el 2007-03-14 19:32 @855, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-03-14 17:46 @782

hay alguna manera script ó orden en perl para convertir de ANSI a UNICODE ?He estado buscando y encuentro cosas sobre Unicode pero no doy con la solución


ANSI => American National Standards Institute.

ASCII => American Standard Code for Information Interchange.

Muy diferente ¿No crees?

Bueno, lo tenía que decir.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Elvin Welten » 2007-03-15 05:12 @258

Hola de nuevo,se me olvido decir que soy novato en Perl :oops: lo digo por que he probado tú programa Explorer y tengo una petada al ejecutarlo.

el fallo es
Unknow discipline ':encoding(iso-8859-1)' at C:/Perl/lib/open.pm line 13.

y despues me dice lo de begin failed en la línea donde tengo la instrucción
use open IN => ":encoding(iso-8859-1)", OUT => ":utf8";


Intuyo que seguramente me falte una librería o mi sistema operativo :(

Tengo Xp y la versión Perl5

Se me olvidaba, pongo lo que tengo dentro de mi open.pm que supongo es lo que viene por defecto.

Un saludo

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
package open;
$open::hint_bits = 0x20000;

sub import {
    shift;
    die "`use open' needs explicit list of disciplines" unless @_;
    $^H |= $open::hint_bits;
    while (@_) {
        my $type = shift;
        if ($type =~ /^(IN|OUT)\z/s) {
            my $discp = shift;
            unless ($discp =~ /^\s*:(raw|crlf)\s*\z/s) {
                die "Unknown discipline '$discp'";
            }
            $^H{"open_$type"} = $discp;
        }
        else {
            die "Unknown discipline class '$type'";
        }
    }
}

1;
__END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Elvin Welten
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2007-02-23 12:51 @577

Notapor explorer » 2007-03-15 06:36 @316

Pues sí... será porque estoy usando el último Perl estable, el 5.8.8.

Para saber tu versión, ejecuta perl -V

O quizás sea porque lo he hecho en Linux... mejor prueba el consejo de kidd.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-03-15 16:32 @730

Ya me surgió una duda... si yo tengo X datos en utf8 y lo quiero en ASCII... que hago?

Ahora, perl trabaja con utf8 o iso-* como si fuera un texto plano?

También depende del encode local (usado por la máquina)?
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Elvin Welten » 2007-03-16 10:44 @489

funciona....
Tenía el Activeperl version 5.6.1 intenté subirle el modulo del encode y fui incapaz de hacerlo :oops: así que le meti el Activeperl 5.8.8 y probé el programa de Explorer.

Ya me rula,gracias por todo :)
Elvin Welten
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2007-02-23 12:51 @577

Notapor explorer » 2007-03-16 20:27 @894

Recomendable la lectura del principio de perllocale.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron