Ciò accade perché le chiamate AJAX utilizzano per impostazione predefinita la codifica predefinita del browser (ad esempio ANSI). Per l'override questo è necessario fare:
jQuery style - mimeType:
$.ajax({
url: "get_label",
mimeType:"text/html; charset=UTF-8",
success: function(result)
{
alert(result);
$("#parameter_select label").text(result);
}
});
Vanilla JS style:
xhr.overrideMimeType("text/html; charset=UTF-8")
Ma da altra parte è necessario essere sicuri, quel server restituisce anche una risposta appropriata. Per questo è necessario verificare quanto segue:
- Aggiungere supporto UTF-8 per il web-contenitore (ad esempio Tomcat), con l'aggiunta di URIEncoding = "UTF-8" per il vostro connettore impostazioni server.xml; controllare this per ulteriori informazioni.
- Se la modifica precedente non ha aiutato (anche se è necessario), assicurarsi anche che il set di caratteri della risposta di servlet sia anche UTF-8.
Per questo è possibile utilizzare una chiamata esplicita del metodo:
@RequestMapping("get_label")
public @ResponseBody String getLabel(HttpServletResponse response)
{
String str = "בדיקה";
//set encoding explicitly
response.setCharacterEncoding("UTF-8");
return str;
}
Or, che sembra essere più preferibile per @ResponseBody
e Spring 3.1+:
@RequestMapping(value = "get_label", produces = "text/html; charset=UTF-8")
public @ResponseBody String getLabel(HttpServletResponse response)
{
String str = "בדיקה";
return str;
}
In conclusione mi vorrei chiarire che, per una corretta gestione delle chiamate AJAX con codifica UTF-8, è necessario assicurarsi che:
- web-container supporta la codifica dei caratteri correttamente questo
- di risposta è UTF-8
- AJAX codifica richiesta di carattere è anche UTF-8
Non funziona ... Ancora ottenere '????' – koela1
Per scopi di test, considerare la cancellazione delle cache del browser poiché JS è memorizzato nella cache piuttosto bene. – n1ckolas
Se non è stato utile, il problema dovrebbe essere sul lato server. In questo caso, si prega di fornire: 1) la versione della molla; 2) il tuo web-container – n1ckolas