Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Problemas con setlocale()

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Lun Jun 12, 2006 3:36 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Problemas con setlocale() Responder citando

Hola amigos,

Estoy comenzando en esto de PERL y el primer problema al que me enfrento es que no hay manera de hacer aparecer bien los textos con eñes y acentos.

Por lo que he podido averiguar debe ser un problema de localización, y por tanto he tratado de solucionarlo poniendo esto:

use POSIX qw(locale_h);
setlocale(LC_ALL, "es_ES.ISO8859-15");

Pero nada, no hay manera. siguen saliendo los simbolitos raros...

Mi máquina es: Windows XP profesional
PERL: 5.6.1
Lo ejecuto desde el terminal de MS-DOS
EDITOR: Ultraedit Studio
Formato de codificación de archivos:
He probado tanto con ANSI cómo con UTF-8.

¿Alguien me puede ayudar?

Muchas gracias de antemano.
Mensaje Lun Jun 12, 2006 3:44 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Ese Perl es antiquísimo. Instala uno más moderno, como el 5.8.8, que ya trae todo el soporte para utf8.

Es lo primero que haría, claro... luego probaría otras opciones...

Yo sólo uso Linux, así que del tema de Windows no puedo ayudarte.
Mensaje Lun Jun 12, 2006 3:53 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

Pues nada ya me esoy bajando la versión ActivePerl 5.8.8.817...

Luego te cuento... gracias
Mensaje Lun Jun 12, 2006 3:54 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

¿Por cierto. es correcto el código que he puesto arriba para que "localice" al español? ¿O tu cambiarías algo?
Mensaje Lun Jun 12, 2006 3:58 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Para mí es correcto... pero sería más correcto decir: necesito activar el locale porque el programa que estoy ejecutando lo hace en un ordenador equipado con un idioma distinto al que va a manejar.

Si tu Windows XP está en español, tu programa debería funcionar sin necesidad de ningún locale.

Un ejemplo. Yo tengo un programa que saca los nombres de los días de la semana y de los meses en castellano, en una tabla:
http://www2.fa1.cie.uva.es/incendios/frames

Bueno, si esa información la tengo que sacar en francés para los marroquíes, puedo usar el mismo programa, cambiando el locale() al principio, y el resto dejarlo tal cual está:
http://maroc.latuv.uva.es/hotspots/index.html

Podría haber hecho dos programas con los nombres en español y en francés, pero... con un locale(), sirvió.

perllocale
perlunicode
Mensaje Lun Jun 12, 2006 4:08 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Vete a tu línea de comandos y ejecuta
Código:
perl -le "print 'Cañón'"
para ver si te sale bien los acentos y la 'ñ'.
Mensaje Lun Jun 12, 2006 4:17 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

Me sigue saliendo mal... Crying or Very sad

Probare "localizando"
Mensaje Lun Jun 12, 2006 4:24 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

Nada, no hay manera.

Ni desde consola...

Ni desde script...

Ni con UTF-8, ni con ASCI...


Va a ser la mierda del microchof...

Muchas gracias de todos modos.
Mensaje Lun Jun 12, 2006 4:25 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Me parece sospechar dónde puede estar el fallo...

Utilizas UltraEdit para hacer los scripts. Si resulta que ese programa te está grabando los scripts en formato utf8, al ejecutarlos desde la línea de comandos, ésta no sabe nada de los códigos unicode...

Bueno... estoy suponiendo... Smile
Mensaje Lun Jun 12, 2006 4:31 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Pon al principio del script:
Código:
use encoding "iso 8859-15";
y prueba...
(Esto se resolvería mejor en el chat, claro Smile )
Mensaje Lun Jun 12, 2006 4:33 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

¿Donde está el chat?
Mensaje Lun Jun 12, 2006 4:35 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Vete a tu Windows XP, Panel de Control, Configuración regional y de idioma, pestaña Opciones Avanzadas.

En la lista de Tabla de conversión de páginas de código, comprueba que esté marcada la tabla 28605 (ISO 8859-15 Latín 9).

ISO 8859-15 es la que utilizo yo en España (por tener el euro -€-) pero si estás en otro país, quizás con el ISO 8859-1 te valdría... mejor comprueba antes que tu idioma es el seleccionado en la lista desplegable que está un poquito más arriba de esa tabla.
Mensaje Lun Jun 12, 2006 4:36 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

aarom escribió:
¿Donde está el chat?
irc://irc.freenode.net/perlenespanol

Ultima edición por explorer el Lun Jun 12, 2006 4:39 pm, editado 1 vez
Mensaje Lun Jun 12, 2006 4:39 pm
aarom
Perlero Nuevo
Perlero Nuevo
Registrado: 12 Jun 2006
Mensajes: 7
Ubicación: Madrid
Responder citando

Pues he repasado todo y está ok.

he probado a crear el script desde el Notepad y desde Dreamweaver, y nada.. pero esque desde consola a pelo, tampoco.
Dejalo, que te estoy entreteniendo demasiado...

Muchisimas gracias.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group