Comunidad de diseño web y desarrollo en internet online

utf-8 en php

Citar            
MensajeEscrito el 20 Abr 2009 08:23 pm
Que tal:

Tengo un pequeño problema que espero que me puedan ayudar, de antemano gracias:

El problema es el siguiente: Tengo una pequeña aplicacion hice utilizando archivos php y ajax, consiste en un simple formulario que guarda un mensaje en la base de datos, y en seguida lo debe mostrar en pantalla uno detras de otro, el problema es con los acentos ya que cuando la pagina se carga se muestra todo de manera correcta, pero cuando escribo el mensaje en mi formulario , pero en pantalla no se ve bien, los caracteres se ven algo como "áéíóú", sin embargo en la base de datos se guarda siempre muy bien y como les decia si vuelvo a cargar la pagina los simbolos desaparecen y se muestran de manera correcta todos los acentos.

los archivos que utliizo ya cuenta con la linea:
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
en el header incluso utilizo
mysql_query("SET NAMES utf8"); en mis queries
tambien la base de datos tiene en cotejamiento utf8
como debo hacer para que se muestren de manera correcta los acentos en todo momento

Gracias!!

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Abr 2009 10:41 pm
En tus codigos de javascript coloca algo así

Código :

<script type="text/javascript" language="JavaScript" charset="ISO-8859-1"></script>

Lo importantes es el charset

Y cuando php le de respuesta a Ajax hazlo usa la función utf8_encode, verbigracia:

Código :

echo utf8_encode("áéíóú");


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 21 Abr 2009 02:18 pm
Hola antes que nada gracias por contestar:

Fijate que ya probe la opción que me diste pero no me funciona y no se porque la verdad, y creo que es extraño porque en mi pagina los datos ya estan cargados por default porque desde el inicio hago un query, estos datos se ven de manera correcta al cargar la pagina, cuando ingreso un nuevo dato se guarda y se visualiza para actualizar utilizando otro php que mando llamar con ajax y es en este momento cuando todos mis acentos se ven mal, pero si vuelvo a recargar la pagina todos los acentos se ven bien, Lo que no comprendo es porque se guarda bien la informacion en la base de datos pero la visualizacion no es correcta sino hasta recargar la pagina

saludos!!

Gracias por cualquier ayuda que me puedan dar

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2009 04:24 pm
Que tal de nuevo:

Pues por fin halle la solución y pues la pongo por si alguien le sirve, bucando un poco por google encontre los siguiente:

Cuando hay que trabajar con datos no sabemos si vienen codificados en UTF-8 o en ISO-8859-1, de hecho segun vi pueden recibirse en ambas codificaciones.

para esto encontre estas funciones muy interesantes y utiles a su vez donde se detecta el tipo de codificacion y se convierte si es necesario

Es importante antes tener habilitado el modulo mbstring que generalmente lo esta

Función que converte un string a ISO-8859-1 (LATIN1)

Código :

function latin1($txt) {
 $encoding = mb_detect_encoding($txt, 'ASCII,UTF-8,ISO-8859-1');
 if ($encoding == "UTF-8") {
     $txt = utf8_decode($txt);
 }
 return $txt;
}


Función que converte un string a UTF-8

Código :


function utf8($txt) {
 $encoding = mb_detect_encoding($txt, 'ASCII,UTF-8,ISO-8859-1');
 if ($encoding == "ISO-8859-1") {
     $txt = utf8_encode($txt);
 }
 return $txt;
}




saludos!!

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2009 04:58 pm
lo que ahora me pasa es que con iexplorer no guarda este tipo de caractes en la base de datos y con firefox si

alguien sabe porque?

saludos!!

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2009 05:00 pm
es por la forma como lo muestra el explorador a mi se me presenta que aveces no se me ven las ñ en ff pero si en ie pero eso es del explorador depende de q español lo has colocado bueno creo yo claro esta no te aseguro nada saludos

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 21 Abr 2009 05:19 pm
hola gracias por contestar:

El problema es que los acentos no llegan a la base de datos de hecho corta las cadenas cuando encuentra uno, esto solo ocurre si los mando desde internet explorer, sin embargo los que ya se encuentran almacenados ya los muestra de manera correcta con la funcion que puse anteriormente


saludos!!

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2009 06:12 pm
Bueno de nuevo pongo la solucion al problema que tenia, pero a decir verdad no entiendo muy bien porque sucedio este problema, espero que algo pueda explicarmelo

Lo que hice fue lo siguiente:

Resulta que yo utilizaba mysql_query("SET NAMES utf8"); antes de almacenar los datos en la base de datos, esta funcion trabaja muy bien pero solo cuando estoy en firefox, ya que si trabajo con ie simplente los acentos no se guardan y las cadenas se cortaban, debido a esto opte por indentificar el tipo de navegador que se esta utilizando y si se trata de ie no utilizo esta función

Ahora trabaja bien para ambos navegadores


saludos!!

Por pako_mclr

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Jul 2011 11:57 am

Por elpeterr

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jul 2011 04:03 pm
si vas a trabajar con utf-8 y estas usando windows para programar primero tienes que convertir todos tus archivos a utf-8 sin BOM desde las paginas html , php, javascript ,css cada archivo debe ser codificado con utf-8 si usas dreamweaver tienes la opcion de guardar en formato utf-8 , tambien recuerda poner en las paginas html el DOCTYPE correspondiente para q te tome las reglas del charset enserio

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.