2010-03-16 20 views
7

Estoy usando jquery $ .getJSON para recuperar la lista de ciudades.Caracteres con jquery json

Todo funciona bien, pero soy de Estonia y estamos usando algunos caracteres como õ, ü. ä, ö.

Cuando paso letras como esta a la función de devolución de llamada, sigo obteniendo cadenas vacías. Traté de codificar64 base64 (codificador del lado del servidor) (complemento de base64 de jquery) (pensé que era una buena idea siempre que pudiera comprimir páginas con php, por lo que no tenía que preocuparme por el ancho de banda), pero de esta manera termino con algunos símbolos chinos al azar.

¿Cuál sería la mejor solución para este problema.

Gracias.

Respuesta

4

Necesitas utf8_encode() sus datos de salida. No es necesario configurar su codificación en el lado del cliente para UTF-8 ya que es predeterminado.

<?php 
    if(isset($_GET['json'])) { 

     die(json_encode(array('text' => utf8_encode('õ, ü. ä, ö')))); 
    } 

    include_jquery(); # this outputs jquery include 
>? 

<script> 

    $.getJSON('this_file.php', { 'json': 1 }, function(data) { 
     console.log('data', data); 
    }); 

</script> 
+0

Looping array con utf8_encode() antes de hacer eco de json_encode resuelto el problema. Gracias por sus consejos a todos. – Mikk

0

Uso UTF-8 en le páginas php y como codificación de salida

0

Esto se parece a algún problema de codificación/charset: ¿está seguro de que está utilizando:

  • El mismo juego de caracteres por todas partes en su aplicación?
    • base de datos
    • archivos de origen
    • cabeceras
    • HTTP enviados al navegador
  • Un conjunto de caracteres que soporta esos personajes?
    • i.e.: ¿está utilizando UTF-8?
    • Cuál es el juego de caracteres Unicode que se utiliza generalmente para aplicaciones web, y es compatible con prácticamente cualquier personaje puede pensar
2

Usted tiene que asegurarse de que mantener una codificación de caracteres consistente. Los caracteres estonios que desea están en utf-8, por lo que debe usar $.ajax y establecer la codificación de caracteres explícitamente (a través de contentType).

Puede tomar el ajax resultante y procesarlo.

También puede usar ajaxSetup antes de llamar a getJSON para establecer el tipo de contenido.

http://api.jquery.com/jQuery.ajaxSetup/

Esto permitirá utilizar getJSON

Además, aquí es un relevante SO post sobre el mismo tema: How to set encoding in .getJSON JQuery