2010-03-16 9 views
7

Ich benutze jquery $ .getJSON, um Liste der Städte abzurufen.Zeichen mit jquery json

Alles funktioniert gut, aber ich komme aus Estland und wir verwenden einige Zeichen wie õ, ü. ä, ö.

Wenn ich solche Buchstaben an die Callback-Funktion übergebe, bekomme ich immer leere Strings. Ich habe versucht, base64 codieren (Server-Seite) -decode (jquery base64 plugin) Strings (ich dachte, es war eine gute Idee, solange ich Seiten mit PHP komprimieren kann, so muss ich nicht über die Bandbreite sorgen), aber auf diese Weise lande ich mit einigen zufälligen chinesischen Symbolen.

Was wäre die beste Problemumgehung für dieses Problem.

Vielen Dank.

Antwort

4

Sie benötigen eine Ausgangsdaten an utf8_encode(). Es ist nicht notwendig, die Kodierung auf der Client-Seite auf UTF-8 zu setzen, da diese bereits voreingestellt ist.

<?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 mit utf8_encode() vor dem Echo json_encode löste das Problem. Vielen Dank für Ihre Hinweise an alle. – Mikk

0

Verwendung von UTF-8 in PHP-Seiten und als Ausgabecodierung

0

Dies sieht aus wie eine Codierung/charset Problem: Sind Sie sicher, dass Sie verwenden:

  • Das gleiche charset überall in Ihrer Anwendung?
    • Datenbank
    • Quelldateien
    • HTTP-Header an den Browser
  • Ein charset, die diese Zeichen unterstützt gesendet?
    • Beispiel: Verwenden Sie UTF-8?
    • , die den Unicode-Zeichensatz ist, die für Web-Anwendung im Allgemeinen verwendet wird, und unterstützt praktisch jedes Zeichen kann man über
2

Denken Sie müssen sicherstellen, dass Sie eine konsistente Zeichencodierung halten. Die gewünschten estnischen Zeichen befinden sich in utf-8, daher müssen Sie $.ajax verwenden und die Zeichencodierung explizit festlegen (über contentType).

Sie können die resultierende Ajax nehmen und verarbeiten.

Sie können auch ajaxSetup verwenden, bevor Sie getJSON aufrufen, um den Inhaltstyp festzulegen.

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

Dies würde erlauben Sie getJSON

Auch hier zu verwenden ist ein relevantes SO über das gleiche Thema schreiben: How to set encoding in .getJSON JQuery