elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [utf-8] conflicto con manejo de caracteres !
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [utf-8] conflicto con manejo de caracteres !  (Leído 3,680 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
[utf-8] conflicto con manejo de caracteres !
« en: 17 Mayo 2011, 18:19 pm »

Buen dia.

Tengo un sistema de correos que me permite enviar publicidad a mis clientes, pero tengo un problema algo raro que ya me tiene muy desesperado !...

Estando en mi plataforma web, doy click sobre un botón que instituí para hacerme un envío de prueba a mi correo y ver "como se supone les llegara a los demás antes de procesar envíos", y como método de prueba cree una campa~a con el asunto: "Curso Virtual de computación", tomando en cuenta que la palabra "computación" esta acentuada. Al dar click en TEST, me llega el corre a mi bandeja y veo que el ASUNTO llega con la palabra acentuada (computacion), vaya TODO MUY BIEN.

Así que, ahora hago un "segundo test", pero ahora utilizando cron en mi servidor dedicado, ya que cada vez que creo una campa~a espero a que cron haga los envios cada madrugada (esa es la idea de automatizar). Pero bueno.... Me voy a la shell y escribo:

Código:
shell# curl -u usuario:clave miscript.php?id=test

Y ahora veo mi buzón de correo y noto que ahora en el asunto la palabra "computacion" no llgo acentuada :(.... Sino que llego asi:

Código:
Curso Virtual de computación



Haciendo pruebas locales genere el sigueinte script local y lo corri en mi Apache Server:

http://localhost/test.php
Código:
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
$texto= 'Curso Virtual de computaci&Atilde;&sup3;n';

echo '<b>limpio</b><br>'. $texto;
echo '<p><b>con decode</b><br>'. html_entity_decode( $texto, ENT_QUOTES );
?>

Al correr el script veo en limpio sale tal cual me llega al mail, y con decode me sale como "debería salirme en el buzón" (respetando las acentuaciones).



Ya verifique el charset default del httpd.conf y esta en UTF-8, ademas en miscript.php del cron tengo especificado el charset UTF-8.




--- ACTUALIZACION ---
Tengo que pasarle dos veces el html_entity_decode() al texto, cuando se esta ejecutando el test via CRON, para que pueda llegar la palabra acentuada. Pero, se me hace muy raro, ya que via web solo se le pasa una sola vez el html_entity_decode() y llega acentuada la palabra al mail.

Alguien sabe porque esto ?


En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #1 en: 17 Mayo 2011, 18:26 pm »

Lo idal seria que en lugar de recurir a la codificacion, especifiques los caracteres no asci por su codigo, por ejemplo la o tildada (ó) es &oacute;

Proba con eso...

Saludos


En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
merolhack

Desconectado Desconectado

Mensajes: 278

Me encanta Joomla y lo que puedo hacer con el


Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #2 en: 17 Mayo 2011, 18:28 pm »

Yo envío los correos sin ponerles los códigos de los caracteres, pero le pongo la siguiente función: utf8_decode

Y en los headers del email:
Código:
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

Saludos!
En línea

PHP Web Developer
Joomla, jQuery, MySQL, CSS, etc...

Android APP Developer http://android-dev.tumblr.com/
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #3 en: 17 Mayo 2011, 18:35 pm »

Lo idal seria que en lugar de recurir a la codificacion, especifiques los caracteres no asci por su codigo, por ejemplo la o tildada (ó) es &oacute;

Proba con eso...

Saludos

Por favor lee bien el tema....

Yo envío los correos sin ponerles los códigos de los caracteres, pero le pongo la siguiente función: utf8_decode

Y en los headers del email:
Código:
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

Saludos!

Yo tambien:

Código:
	$cuerpo .= "Content-Type: text/html; charset=iso-8859-1\r\n";
$cuerpo .= "Content-Transfer-Encoding: 8bits\r\n\r\n";
En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #4 en: 17 Mayo 2011, 18:39 pm »

El problema con la codificacion es que la ran mayoria de los servidores esta configurado para servir los scrips PHP en ISO-8859-1. Y a veces aunque se indique una distina por medio de header pueden surgir problemas...

Insisto en que representes los caracteres no-asci por su codificacion y no literalmente, de esta forma es totalmente a prueba de fallos. No estoy seguro pero creo que existe una funcion nativa de php para ello.

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #5 en: 17 Mayo 2011, 18:42 pm »

El problema con la codificacion es que la ran mayoria de los servidores esta configurado para servir los scrips PHP en ISO-8859-1. Y a veces aunque se indique una distina por medio de header pueden surgir problemas...

Insisto en que representes los caracteres no-asci por su codificacion y no literalmente, de esta forma es totalmente a prueba de fallos. No estoy seguro pero creo que existe una funcion nativa de php para ello.

Saludos

Y como explicas el echo de que tengo que pasarle dos veces html_entity_decode( $texto, ENT_QUOTES) ??... Una vez se pasa dos veces, ya envia las palabras acentuadas... Y porque VIA WEB, con solo pasarle UNA VEZ html_entity_decode( $texto, ENT_QUOTES), llegan acentuadas ?

En la web por defecto esta UTF8, en el mail esta por defecto iso-8859-1..

OJO: los envios de mails que hace el script.php (via cron y se le tiene que pasar dos veces html_entity_decode), primero CONSULTA en la BDD las campa~as, despues extra el campo DATA y le paso DOS VECES el html_entity_decode(), despues armo el mail y envio. Y via web hago lo mismo, solo que omito pasar dos veces html_entity_decode(), haciendolo con una sola vez basta.

Saludos !
« Última modificación: 17 Mayo 2011, 18:44 pm por Diabliyo » En línea

bomba1990


Desconectado Desconectado

Mensajes: 395



Ver Perfil WWW
Re: [utf-8] conflicto con manejo de caracteres !
« Respuesta #6 en: 18 Mayo 2011, 01:32 am »

no soy muy sabido sobre el tema de los correos, pero no seria manejar todo en el mismo tipo de caracteres es decir todo en utf-8, en el server, en el mail y en el archivo. asi no tienes que pasar las cosas.
En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines