PostgreSQL - Problema de codificación con HTML y PHP

 
Vista:

Problema de codificación con HTML y PHP

Publicado por Beldar (1 intervención) el 28/08/2007 17:38:58
Tengo una base de datos montada en PostgreSQL versión 8.1 que trabaja bajo el S.O. GNU/Linux Debian etch
Además tengo un servidor Apache 2.0 montado en la misma máquina.
La versión de PHP que utilizo es la 5.0
He desarrollado una aplicación en PHP que es capaz de leer datos de las tablas, insertar registros y modificar los campos.
Hasta hay todo correcto.
Ahora viene el problema.
El programa en php me envía por correo los cambios que se han realizado en la tablas.
En el navegador web (Internet Explorer o Mozilla, da lo mismo) puedo visualizar el contenido de los campos (que son de tipo texto) sin problemas.
Si abro el contenido de las tablas desde la aplicación pgAdmin III o desde la consola con pgsql veo el contenido codificado correctamente, veo acentos, eñes, etc. igual que en el navegador web.
Pero si abro el correo que se me envía desde PHP lo veo todo mal codificado, se sustituyen los acentos y demás caracteres especiales por símbolos raros. El mensaje se envía en formato HTML.
Da igual si cargo los datos desde un equipo Windows que desde Linux.
Da igual si abro el correo desde Outlook que desde Evolution o Thunderbird.
Les dejo el código que utilizo para enviar los correos. Elimino las direcciones de correo reales para evitar el SPAM

//enviamos la incidencia por correo

//Creamos el asunto del correo
$asunto = "CARGADA Incidencia ".$num;

//seleccionamos la dirección de correo del destinatario desde la tabla de usuarios

$email= "SELECT email from empleados where usuario='".$user."';";

$consult = pg_exec($connection, $email);



for ($lt = 0; $lt < pg_numrows($consult); $lt++)

{

$destinatario = pg_result($consult, $lt, 6);

}


//para el envío en formato HTML

//se supone que esto debe resolver los problemas de codificación.
$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$cuerpo = "

<div align=center>

<font size=6px color=#0000FF>

<b>

INCIDENCIA </font><font size=6px color=#FF0000>". $num ." </font><font size=6px color=#0000FF>CARGADA CORRECTAMENTE!!"."

</b>

</font>

</div>

<br>

<br>



<table border=1 align=center bgcolor=#CCFFCC>

<tr>

<td>

<font size=3px color=#330099>

<b>

N° INCIDENCIA

</b>

</font>

</td>

<td>

<font size=3px color=#FF0000>

<b>

". $num ."

</b>

</font>

</td>

<td>

<font size=3px color=#330099>

<b>

USUARIO

</b>

</font>

</td>

<td>

". $user ."

</td>

<td>

<font size=3px color=#330099>

<b>

DEPARTAMENTO

</b>

</font>

</td>

<td>

". $dep ."

</td>

</tr>

<tr>

<td>

<font size=3px color=#330099>

<b>

DESCRIPCIÓN

</b>

</font>

</td>

<td colspan=5>

". $desc ."

</td>

</tr>

<tr>

<td valign=top>

<font size=3px color=#330099>

<b>

INCIDENCIA

</b>

</font>

</td>

<td colspan=5 height=145 valign=top>

". $incidencia ."

</td>

</tr>

<tr>

<td>

<font size=3px color=#330099>

<b>

PRIORIDAD

</b>

</font>

</td>

<td>

". $prioridad ."

</td>

<td>

<font size=3px color=#330099>

<b>

ESTADO

</b>

</font>

</td>

<td>

". $estado ."

</td>

</tr>

</table>

<br>

";



//dirección del remitente

$headers .= "From: Servidor de Incidencias <[email protected]>\r\n";


//dirección de respuesta, si queremos que sea distinta que la del remitente

$headers .= "Reply-To: [email protected]\r\n";


//ruta del mensaje desde origen a destino

$headers .= "Return-path: [email protected]\r\n";


//direcciones que recibián copia

$headers .= "Cc: [email protected]\r\n";


//direcciones que recibirán copia oculta

//$headers .= "Bcc: [email protected],[email protected]\r\n";

//echo $user;

//echo "<br>";

//echo $mail;

mail($mail,$asunto,$cuerpo,$headers);

Gracias a todos por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema de codificación con HTML y PHP

Publicado por Beldar (1 intervención) el 30/08/2007 12:45:11
He conseguido encontrar y resolver el problema.
Dejo aquí la solución para aquel que le interese.
El fallo estaba en la elección del estandar de codificación de caracteres empleado en el documento php, que no coincidía por el utilizado por el servidor Debian.

En el php utilizaba el estándar ISO-8859-1

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

Pero Debian utiliza el UTF-8
Cambiando la línea anterior de la cabecera del correo se resuelve el fallo:

$headers .= "Content-type: text/html; charset=UTF-8 \r\n";

Saludos a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de codificación con php y postgres

Publicado por gari (1 intervención) el 01/12/2008 22:37:19
tengo un problema al imprimir en una pagina los datos de la base de datos ya que no mustra los acentos ni * ñ *
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema de codificación con HTML y PHP

Publicado por mauricio (2 intervenciones) el 31/08/2007 19:01:56
http://darkavngr.blogspot.com/2007/06/acentos-en-php-postgresql-y-apache-2.html

http://darkavngr.blogspot.com/2007/06/pasos-seguir-para-modificar-el-charset.html

leete las siguientes ligas la primera es sobre configuracion de acentos y la segunda para modificar el charset interno de postgres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar