Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Por favor ayuda con los acentos en ajax

Estas en el tema de Por favor ayuda con los acentos en ajax en el foro de Frameworks JS en Foros del Web. bueno mi ajax funciona excelente solo que las palabras con acento me salen caracteres locos algo asi si la palabra es "maestría" imprime "Maestra0001" o ...
  #1 (permalink)  
Antiguo 13/01/2009, 08:57
 
Fecha de Ingreso: enero-2009
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 1
Pregunta Por favor ayuda con los acentos en ajax

bueno mi ajax funciona excelente solo que las palabras con acento me salen caracteres locos algo asi si la palabra es "maestría" imprime "Maestra0001" o "Maestra020" estes es parte del codigo quisiera saber si conocen alguna solucion gracias

esta es la consulta a la bd

<?php

include("conexion.php");
include("JSON.php");
$json = new Services_JSON();

$sql = "SELECT * FROM estados";
$result = ejecutar($sql);

if(!$result || mysql_num_rows($result)==0){
echo "<nodata>No se encontraron estados</nodata>";
}else{
while($row[]=mysql_fetch_assoc($result));
echo $json->encode($row);
}
?>

y este es el js

document.write("<meta Content-Type: text/html; charset=utf-8>");
$(document).ready(function(){

$.getJSON("estados.php",null,function(data){
$("#estados").html("");
var ul = $("<select onchange='municipios(value)'>");

for(i in data){
ul.append("<option value="+data[i].id_estado+">"+
data[i].nombre+"</option>");
}
$("#estados").append(ul).fadeIn("fast");
});

});

y el html es asi


<tr>
<td>Ubicación</td>
<td>
Estado<div id="estados" style="display:none"></div>

</td>
</tr>

saludos
  #2 (permalink)  
Antiguo 05/04/2009, 13:47
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Por favor ayuda con los acentos en ajax

Hola, por lo que encontre buscando en google la clave es utilizar la función php:

utf8_encode()

sobre los datos antes de utilizar el encode propio de la clase JSON; cuando lo hice de esta forma se resolvio el problema de los acentos, letras ñ, etc en la respuesta.

veamos creo que seria cambiar la linea:

echo $json->encode($row);

por algo como:

$nRow = array();
foreach($row as $key => $val) {
$nRow[$key] = utf8_encode($val);
}
echo $json->encode($nRow);

Por la dif de tiempo en respuesta seguro que ya encontrastes la solución pero la dejo igual para ver si es de ayuda a alguien que se esta econtrando con el problema ahora.

Saludos
  #3 (permalink)  
Antiguo 07/04/2009, 16:52
 
Fecha de Ingreso: abril-2009
Mensajes: 2
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Por favor ayuda con los acentos en ajax

Hola...

Yo tenia el mismo problema el cual lo solucione creando la siguientes las siguientes funciones

Cita:
function is_utf8($str) {
$c=0; $b=0;
$bits=0;
$len=strlen($str);
for($i=0; $i<$len; $i++){
$c=ord($str[$i]);
if($c > 128){
if(($c >= 254)) return false;
elseif($c >= 252) $bits=6;
elseif($c >= 248) $bits=5;
elseif($c >= 240) $bits=4;
elseif($c >= 224) $bits=3;
elseif($c >= 192) $bits=2;
else return false;
if(($i+$bits) > $len) return false;
while($bits > 1){
$i++;
$b=ord($str[$i]);
if($b < 128 || $b > 191) return false;
$bits--;
}
}
}
return true;
}

function pintacadena($cadena)
{
if(!is_utf8($cadena))
return (utf8_encode(trim($cadena)));
else
return (trim($cadena));
}
luego en donde deseo evitar el mal uso de los caracteres especiales uso la funcion pintacadena.

Intentalo y me cuentas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:09.