• Publicidad

Leer acentos de un archivo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Leer acentos de un archivo

Notapor leivkiz » 2008-01-23 06:11 @299

Hola,

Tengo un problema al leer acentos de un archivo con Perl. Abro el archivo leo cada línea y separo las palabras por espacios, pero los acentos aparecen como espacios en blanco y televisión se convierte en "televi" y "n". ¿que debo tocar para que lea los acentos bien?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(FPIN, "<$mystoplist");

  while (<FPIN>) {
 
    @tokens = split(/\s+/, $_);

}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
leivkiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-01-23 06:04 @294

Publicidad

Notapor explorer » 2008-01-23 07:04 @336

Bienvenido a los foros de Perl en Español, leivkiz.

Abre el fichero de textos con un editor de textos y comprueba que los caracteres acentuados no sean realmente espacios en blanco.

La expresión regular que estás usando es muy clara: solo espacios.

Puedes incluso probar con esta línea
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@tokens = split " ";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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 leivkiz » 2008-01-23 07:22 @348

Gracias por la bienvenida.

No, no son espacios en blanco, son palabras con acento, debe ser algo de la codifcicacion, estoy trabajando en linux, los archivos estan en iso 8859-15. El problema es que perl al leer la linea del archivo ya se carga los acentos.
leivkiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2008-01-23 06:04 @294

Notapor explorer » 2008-01-23 07:46 @365

He hecho la prueba y mi Perl no se 'carga' ningún acento. Para Perl, es un byte más (o dos más en caso de utf8). No tiene ningún filtro que quite unos bytes de otros.

Solo hay unos casos en los que sí puede intervenir la codificación de los ficheros que manejamos:

* Si estamos usando use utf8 o use locale
* Si en el open usamos alguna capa (layer) para indicar la codificación de entrada o de salida
* Si indicamos un tipo específico de codificación, con use Encode
* Si modificamos el handle de fichero con binmode() con alguna capa de codificación

Por defecto, Perl trabaja siempre con iso-8859-1.

Pero no importa la codificación: los caracteres acentuados, sin importar que sean utf8 o latin1, no son espacios en blanco.

Haz la prueba siguiente. Haz un programa que solo abra el fichero, lea una línea y la imprima en pantalla. Esa salida la vuelcas a otro fichero y luego la ves con un editor hexadecimal. No debería haber ningún cambio con respecto al original. (Comprueba el fichero original con el hexadecimal, también, por ejemplo, con el comando hexdump -C).

No sé... quizás se me ha escapado algo, pero en las pruebas que he hecho, a mi no me parte las palabras, ni variando la codificación.
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 diegotala » 2008-05-12 17:17 @762

¿Y cómo hago, para que me imprima acentos?

Por ejemplo, acá les paso una parte de un script en Perl, pero en lugar de los acentos, ¡me imprime caracteres extraños!

Ya me fijé de usar use utf8; u otros, pero ninguno me funciona.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "\n";
print "Actualización n° $numero\n";
print " ------------------------------------------------\n";
print " - Disponible en MB -- Disponible en GB -\n";
print " - -- -\n";
print " - $var2 -- $var3 -\n";
print " - -- -\n";
print " ------------------------------------------------\n";

open(FILESP, ">>C:\libre.txt") or die 'cannot open file!';

print FILESP "$var2\n";


# close file handle
close(FILEHSP);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
diegotala
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2008-05-12 17:13 @759

Notapor creating021 » 2008-05-12 18:39 @819

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open(FILESP, ">>C:\libre.txt") or die 'cannot open file!';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Me sorprende que eso te funcione ya que el backslash ("\") está "escapando" la l de libre.txt
Deberías de usar comillas simples o poner ">>C:\\libre.txt"

En cuanto a los caracteres, asegúrate que la terminal o consola soporte el encode que estás usando.
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 explorer » 2008-05-13 06:24 @308

Sería interesante ver esos caracteres extraños.

Si usas use utf8 estás indicando que los caracteres que están escritos DENTRO del programa Perl están escritos en esa codificación.

Ten en cuenta también el editor que has usado para escribir el código.
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 Básico

¿Quién está conectado?

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

cron