Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Básico » Problema con ñ y acentos  RESUELTO Responder al tema
Nuevo tema


Página 1 de 1  [ 3 mensajes ] 
 
Nota 2012-01-09 14:35 @649

Perlero Nuevo
Registrado: 2006-12-28 12:51 @577
Ubicación: Guadalajara, Mexico
Mensajes: 84
Problema con ñ y acentos
Hola a todos:
Tengo un reporte en el que lleva algo de texto, escrito dentro del programa, e información extraída desde una tabla de Asignaturas en MySQL.

Dentro de MySQL esta tabla esta codificada como "UTF8_general_ci".

El problema es que si le muevo a la instrucción

print stdout "Content-type: text/html\n\n";

me varían mucho las cosas. Me explico: así como está dicha instrucción, me genera el reporte siguiente:

Adjunto:
figura01.png
figura01.png [ 139.25 KiB | Visto 179 veces ]


Sin embargo, si cambio esa instrucción y la dejo así,

print stdout "Content-type: text/html;charset=utf-8\n\n";

me genera el reporte así,

Adjunto:
figura02.png
figura02.png [ 141.63 KiB | Visto 179 veces ]


como se puede apreciar, los registros extraídos de MySQL los cambia o no sé cómo llamarle.

Incluyo el código del programa por si alguien me puede ayudar.

Adjunto:
figura03.png
figura03.png [ 96.39 KiB | Visto 179 veces ]


De antemano, gracias.

Negrazo


Nota 2012-01-09 15:53 @703
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con ñ y acentos  RESUELTO
¡Madre mía, qué follón de código...!

Si usas el módulo CGI, ¿por qué usas print() para sacar código HTTP/HTML?

¿Por qué importas dos veces el código CGI?

Vamos, que te sobran la mitad de las líneas...

Por favor, no pongas pantallazos del código, sino el propio código. Es más fácil luego de manejar (y ocupa bastante menos en disco).

En cuanto al tema de las tildes...

Supongamos que la base de datos almacena los datos en UTF-8, como comentas... entonces... los datos que pasan al programa Perl siguen estando en UTF-8... y por la primera pantalla veo que los caracteres salen como UTF-8 (los famosos caracteres 'Ãx'). PERO también hay párrafos que salen bien (MARÍA DE LOS ÁNGELES). Eso quiere decir que el programa Perl está emitiendo los textos sin realizar ninguna transformación ni codificación. Si, como supongo, el navegador web está usando la codificación ISO-8859-1 por defecto, entonces vemos mal los caracteres tildados en UTF-8, pero bien los textos que están codificados en ISO-8859-1 (o similar).

Al ponerle la cabecera para indicar que sí es un flujo UTF-8, cambian las tornas: salen bien los que antes salían mal, y viceversa.

Entonces... la solución es decodificar SIEMPRE lo que recibimos (la entrada estándar, los datos de la base de datos), y codificar SIEMPRE lo que sacamos hacia el navegador.

La recomendación actual es siempre usar el módulo Encode, para realizar las transformaciones. Y si un archivo o entrada estándar sabemos que está en una determinada codificación, usaremos alguna capa E/S que haga la transformación de forma automática.

_________________
JF^D Perl programming


Nota 2012-01-13 12:45 @573

Perlero Nuevo
Registrado: 2006-12-28 12:51 @577
Ubicación: Guadalajara, Mexico
Mensajes: 84
Re: Problema con ñ y acentos(RESUELTO)
Muchas gracias explorer. (Problema RESUELTO)
Ya usé el módulo Encode con una de sus opciones y ya todo funciona muy bien.

Siempre hay algo nuevo que aprender.

Saludos desde Guadalajara, Mexico.

Negrazo


Responder al tema  [ 3 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO