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

problema json acento

Estas en el tema de problema json acento en el foro de Frameworks JS en Foros del Web. hola a todos estoy recuperando un json que contiene la palabra "acción" la cual, el json, me la retorna como nulo (null) y no como ...
  #1 (permalink)  
Antiguo 20/07/2009, 10:46
Avatar de fbirrer  
Fecha de Ingreso: enero-2006
Ubicación: Santiago de Chile
Mensajes: 329
Antigüedad: 18 años, 2 meses
Puntos: 0
problema json acento

hola a todos

estoy recuperando un json que contiene la palabra "acción" la cual, el json, me la retorna como nulo (null) y no como lo que debiese ser. Cuando por base de datos le saco el acento, me lo retorna bien....

¿a que se debe el error?
¿cómo podre solucionarlo?

Gracias
__________________
Desde Santiago de Chile
Grupo Universite
Información sobre los Institutos Chilenos de Educación
www.universite.cl
  #2 (permalink)  
Antiguo 20/07/2009, 11:36
 
Fecha de Ingreso: julio-2009
Ubicación: Tijuana
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: problema json acento

Qué tal.

Hay diversas razones por la cual puede estar sucediendo eso.

Revisa si tu codificación está en UTF-8 .. una cosa es la codificación de tu sistema, otra la del documento, y otra la especificada en el html

¿Qué utilizas para decodificar el JSON (jQuery.getJSON() , o JSON.parse() ) ?

Saludos!
  #3 (permalink)  
Antiguo 20/07/2009, 14:14
Avatar de fbirrer  
Fecha de Ingreso: enero-2006
Ubicación: Santiago de Chile
Mensajes: 329
Antigüedad: 18 años, 2 meses
Puntos: 0
Mensaje Respuesta: problema json acento

mmm....

parece que no estoy codificando el retorno de los datos, y eso me esta generando errores

te muestro mi codigo, quizas hay muchas cosas que cometo errores....


esta es la pagina principal (donde cargo los resultados del json)
Código PHP:
    function mTareas(){
        var 
$mensaje document.getElementById("_MENSAJE").innerHTML;
        var 
$empresa document.getElementById("pEmpresa").value;
        
            $.
ajax({
                
type'get',
                
dataType'json',
                
contentType"application/json; charset=utf-8",
                
cachefalse,
                
asyncfalse,
                
url'../ajax/listarTarea.php',
                
data: {mensaje$mensajeempresa$empresa},
                
success: function(json){lTareas(json);}
            })
        
    }

    function 
lTareas(json){
        
clearTabla("flexTareas");
        for(var 
i=0;i<json.length;i++){
            
insRowTarea(json[i].task_idjson[i].task_nombrejson[i].task_actividadjson[i].task_montojson[i].task_fecdesdejson[i].task_fechastajson[i].requi_idjson[i].task_dest_id,json[i].user_actual,i);
        }
    }

    function 
insRowTarea(id$nombre$actividad$monto$desde$hasta$requisito$responsable,$usuario$conta){
        
        var 
csss;
        if (
$conta%2==1){
            
csss="grid_alternate";
        }else{
            
csss="grid_item";
        }
        
        
$desde$desde.substring(8,10)+"-"+$hasta.substring(5,7)+"-"+$hasta.substring(0,4);
        
$hasta$hasta.substring(8,10)+"-"+$hasta.substring(5,7)+"-"+$hasta.substring(0,4);
        
        var 
tds "<tr  class='" csss "'  onMouseOver=this.className='grid_seleccionar'; onMouseOut=this.className='" csss "';>";
        
tds +="<td>" $nombre "</td>";
        
tds +='<td>' $requisito '</td>';
        
tds +='<td>' $usuario '</td>';
        
tds +='<td>' $desde '</td>';
        
tds +='<td>' $hasta '</td>';
        
tds +='<td  align="right">' $monto '</td>';
        
tds +="<td align='center'><a href='javascript:delRowTarea(" id ");'>Eliminar</a></td>";
        
        $(
"#flexTareas").append(tds);          
    } 
esta es la pagina de la llamada al servidor

Código PHP:
    include('../config/conect.php');
    include(
'../config/process.php');
    
$cnn conexion();


    
$_mensaje $_GET['mensaje'];    
    
$_empresa $_GET['empresa'];    


    
$sql="SELECT task_id, t.empresa, mensaje, task_nombre, task_monto, task_fecdesde, task_fechasta, r.requi_nombre as requi_id, task_dest_id, concat(user_apaterno,' ',user_amaterno,', ',user_nombres) as user_actual  FROM cus_activ_tarea t, cus_activ_requisito r, process_usuario u  where r.requi_id=t.requi_id and u.user_id = t.task_dest_id and t.mensaje=$_mensaje and t.empresa=$_empresa order by task_nombre asc";

    
$stmt=mysql_query($sql,$cnn);
    while (
$rowEmp mysql_fetch_assoc($stmt)) {
        
$data[] = $rowEmp;
    }
    echo 
json_encode($data);
    
//echo json_encode($data);
     
mysql_close($cnn); 
agradeceré tus comentarios para mejorar mi codigo, y que ya no me salga mas este error,

gracias
__________________
Desde Santiago de Chile
Grupo Universite
Información sobre los Institutos Chilenos de Educación
www.universite.cl
  #4 (permalink)  
Antiguo 07/10/2009, 06:10
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: problema json acento

Yo tengo el mismo problema con json...

Si saco la información de la base de datos sale con tildes.

Si la saco de la bd y la mando a través de ajax usando una cadena de texto me llega bien

Pero si la saco de la bd y la mando a través de ajax usando json, los valores con tildes me llegan vacíos

¿Alguna solución?
  #5 (permalink)  
Antiguo 08/10/2009, 08:06
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: problema json acento

revisa que todos los documentos de javascript esten en codificación utf-8 sin bom. Si utilizas windows, te recomiendo que utilices notepad++.
__________________
I see dead pixels
  #6 (permalink)  
Antiguo 08/10/2009, 22:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: problema json acento

en el codigo php coloca esto te sirve para las ñ y los tildes lo uso con getson y me soluciona el problema que tienes header(”Content-Type: text/html; charset=iso-8859-1″);
  #7 (permalink)  
Antiguo 08/10/2009, 22:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: problema json acento

en el codigo php coloca esto te sirve para las ñ y los tildes lo uso con getson y me soluciona el problema que tienes header(”Content-Type: text/html; charset=iso-8859-1″);
  #8 (permalink)  
Antiguo 27/10/2009, 08:16
 
Fecha de Ingreso: mayo-2005
Mensajes: 2
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: problema json acento

Excelente!!
Ya me traía de cabeza ese problema!!
Estoy utilizando Ajax con JQuery
Gracias!

Última edición por vitalini; 27/10/2009 a las 08:29
  #9 (permalink)  
Antiguo 02/11/2009, 12:55
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema json acento

¿y qué pasa cuando los parámetros que se pasan en la solicitud ajax tienen acentos?

Mi problema es ese. Desde php con header lo controlo bien, pero cuando es jquery el que envía los datos ¿cómo controlo que esos datos/parámetros estén en el charset adecuado?
  #10 (permalink)  
Antiguo 03/11/2009, 08:08
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: problema json acento

Podes probar con : escape() y unescape() de javascript.
  #11 (permalink)  
Antiguo 03/11/2009, 09:15
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema json acento

Podría ser una buena idea, mayid. Supongo que en php también hay una función unescape para poder tratar los parámetros antes de utilizarlos.
  #12 (permalink)  
Antiguo 03/11/2009, 10:09
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: problema json acento

si, supongo que son utf8_encode() y utf8_decode() a los que te refiris en PHP. Cual es en definitiva tu charset?

Para imprimir una respuesta json en PHP necesitas esta cabecera.

Cita:
header('Content-type: application/json');
Que supongo se puede combinar con lo que te dijo hsolar:

Cita:
en el codigo php coloca esto te sirve para las ñ y los tildes lo uso con getson y me soluciona el problema que tienes header(”Content-Type: text/html; charset=iso-8859-1″);
Asi:

Cita:
header('Content-type: application/json; charset=iso-8859-1');
o con utf8.
  #13 (permalink)  
Antiguo 05/11/2009, 03:16
 
Fecha de Ingreso: enero-2008
Mensajes: 23
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: problema json acento

Efectivamente, a los parámetros recibidos les aplico utf8_decode en php y a la respuesta desde php aplico header(”Content-Type: text/html; charset=iso-8859-1″);

Gracias de nuevo
  #14 (permalink)  
Antiguo 07/04/2012, 16:42
 
Fecha de Ingreso: enero-2009
Mensajes: 11
Antigüedad: 15 años, 2 meses
Puntos: 2
Sonrisa Respuesta: problema json acento

YO LO RESOVI DE ESTA FORMA.
EN PRIMER LUGAR TENIA QUE LEER DE LA BASE DE DATOS ALGUNOS REGISTROS COMO ESTOS
-avéstico
-amárico
-árabe
-aragonés
Y EL RESULTADO ERA NULL
ASI QUE AGREGUE LA FUNCTION htmlentities
ESTE ES UN EJEMPLO:
Código PHP:
$result mysql_query($sqlQuery$localhost) or die(mysql_error());
if (
$result) {
    
//TOMAMOS EL RESULTADO DE LA BASE DE DATOS
    
while ($rowEmp mysql_fetch_assoc($result)) {
        
//COLOCAMOS EL ARRARY EN $data PERO PRIMERO LOS CONVERTIMOS PARA QUE PUEDAN SER LEIDOS POR EL NAVEGADOR
        
$data[] = array_map('htmlentities'$rowEmp);
    }
    echo 
json_encode($data);

NOTA:array_map ES UNA FUNCION INTERNA DE PHP
SALUDOS ESPERO QUE LES FUNCIONE.
  #15 (permalink)  
Antiguo 26/11/2012, 15:05
 
Fecha de Ingreso: noviembre-2012
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: problema json acento

eucm2:
Me estoy registrando en el foro para poder agradecerte
Buenisimo con tu ayuda me solucionaste el problema.
Gracias
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:03.