por plantilla para hacer formulario enviar envia desde crear correo con como codigo character-encoding

character encoding - plantilla - ¿Por qué las citas se convierten en divertidos personajes cuando se envían en un formulario HTML?



enviar plantilla html por correo php (3)

Esto parece un caso clásico de caracteres unicode (UTF-8 más probable) interpretados como iso-8859-1. Hay un par de lugares en el camino donde los personajes pueden corromperse. Primero, el navegador del cliente debe enviar los datos. Podría dañar los datos si no puede convertir los caracteres correctamente a la codificación de caracteres de la página. Luego, el servidor lee los datos y decodifica los bytes en caracteres. Si el cliente y el servidor no están de acuerdo con la codificación utilizada, los caracteres estarán dañados. Entonces los datos se almacenan en la base de datos; nuevamente hay potencial para la corrupción. Finalmente, cuando los datos están escritos en la página (para mostrarlos al navegador), el navegador puede malinterpretar los bytes si la página no indica adecuadamente su codificación.

Debe asegurarse de estar usando UTF-8 en todo momento. El valor predeterminado para las páginas web es iso-8859-1, por lo que sus páginas web se deben servir con el encabezado Content-Type o la metaetiqueta

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

(asegúrese de que realmente está publicando el texto en esa codificación).

Al usar UTF-8 en todas las partes del proceso, evitará problemas con todos los navegadores web y bases de datos en funcionamiento.

Tengo un formulario HTML y algunos usuarios copian y pegan texto de MS Word. Cuando hay comillas simples o comillas dobles, se traducen en caracteres divertidos como:

'''' Y Ã ™ Â ™ ™

La columna de la base de datos es la intercalación utf8_general_ci.

¿Cómo puedo obtener los personajes apropiados para aparecer?

Editar: Problema resuelto. Así es como lo arreglé:

Ran mysql_query("SET NAMES ''utf8''"); antes de agregar / recuperar de la base de datos. (gracias al comentario de Donal a continuación).

Y algo extraño, la función php urlencode($text) se aplicó al mostrar, por lo que tuvo que ser eliminado.

También me aseguré de que los encabezados de la página y la solicitud / respuesta de ajax fueran todos utf8.


Tenemos una función de PHP que intenta limpiar el desorden con presupuestos inteligentes. Es un poco desordenado, ya que ha crecido un poco orgánicamente a medida que aparecían los casos durante el desarrollo del prototipo. Sin embargo, puede ser de alguna ayuda:

function convert_smart_quotes($string) { $search = array(chr(0xe2) . chr(0x80) . chr(0x98), chr(0xe2) . chr(0x80) . chr(0x99), chr(0xe2) . chr(0x80) . chr(0x9c), chr(0xe2) . chr(0x80) . chr(0x9d), chr(0xe2) . chr(0x80) . chr(0x93), chr(0xe2) . chr(0x80) . chr(0x94), chr(226) . chr(128) . chr(153), ''’'',''“'',''â€<9d>'',''â€"'','' ''); $replace = array("''","''",''"'',''"'','' - '','' - '',"''","''",''"'',''"'','' - '','' ''); return str_replace($search, $replace, $string); }


Verifica la codificación que usa la página. Codifíquelo utilizando UTF-8 también, y agregue una metaetiqueta que describa la codificación:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />