Comment définir le codage dans .getJSON JQuery

voix
39

Dans mon application web, je soumets quelques champs de formulaire avec jQuery $.getJSON()Méthode. Je quelques problèmes avec l'encodage. Le jeu de caractères de mon application est charset=ISO-8859-1mais je pense que ces champs sont soumis avec UTF-8.

Est -ce que quelqu'un sait comment je peux définir le codage dans les $.getJSONappels?

Créé 25/08/2008 à 19:45
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
43

Si vous souhaitez utiliser , $.getJSON()vous pouvez ajouter ce qui suit avant l'appel:

$.ajaxSetup({
    scriptCharset: "utf-8",
    contentType: "application/json; charset=utf-8"
});

Vous pouvez utiliser le charset que vous voulez plutôt utf-8.

Les options sont expliquées ici .

contentType :Lors de l' envoi des données au serveur, utilisez ce content-type. Par défaut application/x-www-form-urlencoded, ce qui est très bien pour la plupart des cas.

scriptCharset :Uniquement pour les demandes avec jsonpou scriptdataType et le type GET. Force la demande doit être interprétée comme un certain charset. Seulement nécessaire des différences de charset entre le contenu local et à distance.

Vous devrez peut-être un ou les deux ...

Créé 25/08/2008 à 23:12
source utilisateur

voix
33

Je pense que vous aurez probablement à utiliser $.ajax()si vous voulez changer le codage, voir le contentTypeparam ci - dessous (la successet errorcallbacks suppose que vous avez <div id="success"></div>et <div id="error"></div>dans le html):

$.ajax({
    type: "POST",
    url: "SomePage.aspx/GetSomeObjects",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: "{id: '" + someId + "'}",
    success: function(json) {
        $("#success").html("json.length=" + json.length);
        itemAddCallback(json);
    },
    error: function (xhr, textStatus, errorThrown) {
        $("#error").html(xhr.responseText);
    }
});

En fait, je devais juste faire il y a environ une heure, quelle coïncidence!

Créé 25/08/2008 à 20:23
source utilisateur

voix
4

Vous devez analyser les JSON appels à l'aide Wireshark, vous verrez si vous incluez le jeu de caractères dans la formation de la page JSON ou non, par exemple:

  • Si la page est simple si le texte / html
0000 48 54 54 50 2F 31 20 31 2e 32 30 30 20 4f 4b 0d HTTP / 1.1 200 OK.
0010 0a 43 6f 6E 74 65 6E 74 2d 54 79 70 65 20 74 3a .Contenu -Type: t
0020 65 78 74 68 74 2f 6d 6c 0d 0a 43 61 63 68 65 2d ext / html ..Cache-
0030 43 74 72 6e 6f 6f 6c 3a 20 6e 6f 2d 63 61 63 68 Control: no-cach
  • Si la page est du type comprenant JSON custom avec MIME "charset = ISO-8859-1"
0000 48 54 54 50 2F 31 20 31 2e 32 30 30 20 4f 4b 0d HTTP / 1.1 200 OK.
0010 0a 43 61 63 68 65 2d 43 74 72 6f 6e 6f 6c 3a 20 .cache-C ontrol: 
0020 6e 6f 2d 63 61 63 68 65 43 6f 0d 0a 6E 74 65 6E no-cache ..Conten
0030 74 2d 54 79 70 65 3a 20 74 65 78 74 68 74 2f 6d t-Type: text / htm
0040 6c 3b 63 68 61 20 72 73 65 74 3d 49 53 38 4f 2d l; caractères et = ISO-8
0050 38 35 39 2d 31 0d 0a 43 6f 6e 6e 65 63 74 69 6f 859-1..C onnectio

Pourquoi donc? parce que nous ne pouvons pas mettre sur la page de JSON un but comme celui-ci:

Dans mon cas, j'utilise le fabricant Me connecter 9210 Digi:

  • Je devais utiliser un drapeau pour indiquer que l'on pourrait utiliser MIME non standard: P-> theCgiPtr-> = fDataType eRpDataTypeOther;
  • Il a ajouté le nouveau MIME dans la variable: strcpy (P-> theCgiPtr-> fOtherMimeType, "text / html; charset = ISO-8859-1");

Il a travaillé pour moi sans avoir à convertir les données transmises par JSON pour UTF-8, puis refaire la conversion sur la page ...

Créé 07/03/2012 à 18:22
source utilisateur

voix
1

Utilisez encodeURI()au client JS et utiliser URLDecoder.decode()dans les travaux secondaires serveur Java.


Exemple:

  • Javascript :

    $.getJSON(
        url,
        {
            "user": encodeURI(JSON.stringify(user))
        },
        onSuccess
    );
    
  • Java :

    java.net.URLDecoder.decode(params.user, "UTF-8");

Créé 03/01/2012 à 03:52
source utilisateur

voix
0

Utilisez cette fonction pour retrouver les caractères utf-8

function decode_utf8(s) { 

  return decodeURIComponent(escape(s)); 

}

Exemple:

var new_Str=decode_utf8(str);
Créé 12/11/2014 à 12:43
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more