Mie Mar 14, 2007 11:24 am
|
 |
Elvin Welten
Perlero Nuevo

|
Registrado: 23 Feb 2007
Mensajes: 5
|
|
| Convertidor de Ansi a Unicode? |
|
|
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 |
|
|
|
Mie Mar 14, 2007 1:33 pm
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
|
|
|
|

Mie Mar 14, 2007 3:59 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
No lo he probado, pero quizás con esto también funcione:
| Perl: | use open IN => ":encoding(iso-8859-1)", OUT => ":utf8"; |
Actualización: Pues sí... funciona...
Si kk.txt contiene:
| Código: |
áéíóúñÑ
> hexdump -C kk.txt
00000000 e1 e9 ed f3 fa f1 d1 0a |........|
00000008 |
codificado en ansi (realmente iso-8859-1)
Con este programa: | Perl: | #!/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; | La salida es la misma, pero con caracteres en utf8:
| Código: |
áéíóúñÑ
> hexdump -C kk1.txt
00000000 c3 a1 c3 a9 c3 ad c3 b3 c3 ba c3 b1 c3 91 0a |...............|
0000000f |
Ultima edición por explorer el Mie Mar 14, 2007 6:32 pm, editado 1 vez |
|

Mie Mar 14, 2007 4:46 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
| Cita: | | 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. |
|

Jue Mar 15, 2007 4:12 am
|
 |
Elvin Welten
Perlero Nuevo

|
Registrado: 23 Feb 2007
Mensajes: 5
|
|
|
|
|
Hola de nuevo,se me olvido decir que soy novato en Perl lo digo por que he probado tú programa Explorer y tengo una petada al ejecutarlo.
el fallo es
| Cita: | | 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
| Cita: | | 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
| Perl: | 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__ |
|
|

Jue Mar 15, 2007 5:36 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Jue Mar 15, 2007 3:32 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 498
Ubicación: Frente al monitor
|
|
|
|
|
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)? |
|
Vie Mar 16, 2007 9:44 am
|
 |
Elvin Welten
Perlero Nuevo

|
Registrado: 23 Feb 2007
Mensajes: 5
|
|
|
|
|
funciona....
Tenía el Activeperl version 5.6.1 intenté subirle el modulo del encode y fui incapaz de hacerlo así que le meti el Activeperl 5.8.8 y probé el programa de Explorer.
Ya me rula,gracias por todo  |
|
Vie Mar 16, 2007 7:27 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
| Recomendable la lectura del principio de perllocale. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|