2010-08-24 8 views
2

J'ai deux comboboxes "A" & "B". Le combo "B" est rempli à l'aide de jQuery Ajax (dataType: json) lorsqu'une valeur dans Combo "A" est sélectionnée (événement onchange).Conflit jQuery-Ajax JSON charset

Il y a des cas où une partie des données dans "B" peut être chinoise/internationale, auquel cas les données apparaissent comme "????" dans le navigateur.

En général, la configuration entière est comme ceci:

ERP < ---> Servlet < ---> JSP < ---> Navigateur

ERP est UTF-8 activé. Je peux voir clairement les données en chinois dans la console ERP. J'ai jeté les données résultantes qui passent dans le servlet dans un fichier juste pour vérifier si c'est approprié. C'est parfaitement encodé. J'ai défini le contentType pour les JSP en UTF-8. Tout est en place.

J'ai ajouté le contentType nécessaire dans Ajax à "application/json; charset = utf-8". Toujours pas de dés.

Quitte le navigateur. J'ai utilisé tous les navigateurs et le même problème se pose. J'ai remarqué que le navigateur n'est tout simplement pas capable de comprendre le charset des données chinoises lorsqu'il est rempli à la volée.

Que peut-il y avoir de mauvais? Pour des raisons de sécurité, je ne peux pas poster le code. Je serais reconnaissant pour toute sorte de conseil.

Merci beaucoup! ~ Sabier

+0

Est-ce que vous voyez un mauvais encodage dans tous les navigateurs? – Piskvor

+0

Oui, sur tous les navigateurs, y compris Firefox. – user429573

+0

Si c'est dans tous les navigateurs, votre système d'exploitation peut-il afficher les caractères chinois? –

Répondre

0

Si vous avez défini votre JSP en UTF-8 et votre, vous pouvez essayer cette

1) contentType est en UTF-8 a également obtenu, Qu'en est-il en utilisant CONTENTTYPE params lorsque vous appelez la servlet, comme indiqué dans https://stackoverflow.com/a/6283111/1078487

$.ajax({ 
     type: "POST", 
     url: "yourservlet", 
     dataType: "text", 
     data: {yourparams},// here we def wich variabe is assiciated 
     contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
     success: function(data) { 
     //population 
     } 
}); 

2) Même si votre ERP est paramétré en UTF-8, il suffit de double vérifier les chaîne retour en utilisant une conversion d'octets UTF-8 et de voir ce qui se passe.

byte[] utf8Bytes = stringToParse.getBytes("UTF8"); 
String stringToReturn = new String(utf8Bytes, "UTF8");