jQuery AJAX appel bousille l'encodage des caractères

J'ai une servlet qui sorties JSON. L'encodage de sortie pour la servlet est ISO-8859-1. Pages dans notre application sont également fixés à la norme ISO-8859-1. Je voudrais utiliser l'UTF-8, mais c'est hors de mon contrôle; nous devons utiliser ISO-8859-1.

Quand j'ai frappé la servlet par lui-même, je peux voir les données JSON qui a été sorti. Le codage des caractères est correct, et aucun des personnages paraissent étranges.

Cependant, lorsque j'appelle la servlet via AJAX et d'utiliser les données extraites pour remplir une boîte de sélection, je reçois � à la place de (paraît-il) tous les caractères qui ont des accents (j'ai par exemple avec de graves ou d'accent aigu, diérèse, ou circonflexe). Quand je regarde la réponse dans l'onglet Net sous Firebug, je vois que ce que le texte a l'air bien. Cependant, lorsque j'utilise que les données pour remplir la boîte de sélection, j'ai le diamant-avec-questionmark.

Ces personnages sont tous valides ISO-8859-1 caractères, et donc je ne comprends pas pourquoi ils n'apparaissent pas correctement.

MODIFIER

Certains plus d'informations. J'utilise GET dans jQuery.ajax et j'ai mis scriptCharset à ISO-8859-1. Sur le côté serveur, j'ai explicitement définir l'encodage ISO-8859-1 en utilisant request.setCharacterEncoding("ISO-8859-1");

MODIFIER

Des exemples de Code:

C'est ce que j'ai actuellement. J'ai ajouté scriptCharset: "ISO-8859-1" pas d'effet.

        jQuery.ajax({
            url: "/countryAndProvinceCodeServlet",
            data: data,
            dataType: "json",
            type: "GET",
            success: function(data) {
               ...
            },
        });

Ma servlet utilise org.json.JSONObject et simplement sorties de la chaîne en faisant response.getWriter().print(jsonObject.toString());

Mise à JOUR

Par les commentaires sur JSON, et comment il doit être en UTF-8, j'ai essayé de voir si je pouvais saisir les données sous forme de texte (donc définir dataType à text dans jQuery.ajax), puis de l'évaluer comme JSON moi-même (en Javascript). Cela ne semble pas fonctionner non plus! Quand je fais console.log, j'ai toujours l'funky diamants. Cependant, quand je la regarde sous l'onglet réseau de Firebug tout s'affiche correctement:

Onglet Net:

{"error":false,
 "provinces":{"DZ-01":"Adrar",
              "DZ-16":"Alger",
              "DZ-23":"Annaba",
              "DZ-44":"Aïn Defla",
              "DZ-46":"Aïn Témouchent",
              "DZ-05":"Batna",
              "DZ-07":"Biskra",
              "DZ-09":"Blida",
              "DZ-34":"Bordj Bou Arréridj",
              "DZ-10":"Bouira",
              "DZ-35":"Boumerdès",
              "DZ-08":"Béchar",
              "DZ-06":"Béjaïa",
              "DZ-02":"Chlef",
              "DZ-25":"Constantine",
              "DZ-17":"Djelfa",
              "DZ-32":"El Bayadh",
              "DZ-39":"El Oued",
              "DZ-36":"El Tarf",
              "DZ-47":"Ghardaïa",
              "DZ-24":"Guelma",
              "DZ-33":"Illizi",
              "DZ-18":"Jijel",
              "DZ-40":"Khenchela",
              "DZ-03":"Laghouat",
              "DZ-29":"Mascara",
              "DZ-43":"Mila",
              "DZ-27":"Mostaganem",
              "DZ-28":"Msila",
              "DZ-26":"Médéa",
              "DZ-45":"Naama",
              "DZ-31":"Oran",
              "DZ-30":"Ouargla",
              "DZ-04":"Oum el Bouaghi",
              "DZ-48":"Relizane",
              "DZ-20":"Saïda",
              "DZ-22":"Sidi Bel Abbès",
              "DZ-21":"Skikda",
              "DZ-41":"Souk Ahras",
              "DZ-19":"Sétif",
              "DZ-11":"Tamanghasset",
              "DZ-14":"Tiaret",
              "DZ-37":"Tindouf",
              "DZ-42":"Tipaza",
              "DZ-38":"Tissemsilt",
              "DZ-15":"Tizi Ouzou",
              "DZ-13":"Tlemcen",
              "DZ-12":"Tébessa"}}

Mais quand je fais console.log(text) avec ce que je reçois de jQuery.ajax, je reçois le texte suivant:

{"error":false,
 "provinces":{"DZ-01":"Adrar",
              "DZ-16":"Alger",
              "DZ-23":"Annaba",
              "DZ-44":"A�n Defla",
              "DZ-46":"A�n T�mouchent",
              "DZ-05":"Batna",
              "DZ-07":"Biskra",
              "DZ-09":"Blida",
              "DZ-34":"Bordj Bou Arr�ridj",
              "DZ-10":"Bouira",
              "DZ-35":"Boumerd�s",
              "DZ-08":"B�char",
              "DZ-06":"B�ja�a",
              "DZ-02":"Chlef",
              "DZ-25":"Constantine",
              "DZ-17":"Djelfa",
              "DZ-32":"El Bayadh",
              "DZ-39":"El Oued",
              "DZ-36":"El Tarf",
              "DZ-47":"Gharda�a",
              "DZ-24":"Guelma",
              "DZ-33":"Illizi",
              "DZ-18":"Jijel",
              "DZ-40":"Khenchela",
              "DZ-03":"Laghouat",
              "DZ-29":"Mascara",
              "DZ-43":"Mila",
              "DZ-27":"Mostaganem",
              "DZ-28":"Msila",
              "DZ-26":"M�d�a",
              "DZ-45":"Naama",
              "DZ-31":"Oran",
              "DZ-30":"Ouargla",
              "DZ-04":"Oum el Bouaghi",
              "DZ-48":"Relizane",
              "DZ-20":"Sa�da",
              "DZ-22":"Sidi Bel Abb�s",
              "DZ-21":"Skikda",
              "DZ-41":"Souk Ahras",
              "DZ-19":"S�tif",
              "DZ-11":"Tamanghasset",
              "DZ-14":"Tiaret",
              "DZ-37":"Tindouf",
              "DZ-42":"Tipaza",
              "DZ-38":"Tissemsilt",
              "DZ-15":"Tizi Ouzou",
              "DZ-13":"Tlemcen",
              "DZ-12":"T�bessa"}}

Il me semble que jQuery est en train de faire quelque chose de bizarre avec les données.

Je sais que vous avez dit, les pages sont ISO-8859-1, mais avez-vous vérifié que les en-têtes sont en fait que?
Juste mis à jour à ma question. Oui, les en-têtes de dire ISO-8859-1. Quand je vérifie sur la page d'info dans Firefox, il dit " ISO-8859-1.
Voir aussi: stackoverflow.com/questions/26620/...
essayé aussi. Malheureusement, ne fonctionne toujours pas 🙁

OriginalL'auteur Vivin Paliath | 2010-07-07