У меня есть древовидная структура jstree на моей странице, которая использует данные JSON и AJAX. Некоторые скандинавские символы (ä и ö) обрабатываются неправильно.
Jstree получает структуру JSON через фильтр сервлета Java. Структура кодируется как UTF-8. Когда я смотрю на возвращаемую структуру JSON с помощью firebug, скандинавские символы отображаются правильно. Я попытался изменить кодировку символов на ISO 8859-4, чтобы посмотреть, поможет ли это, но это не помогло.
Я не уверен, какие части кода имеют отношение к этой проблеме, но вот некоторые части.
Инициализация дерева:
.jstree({
"json_data" : {
"ajax" : {
"url" : hostUrl+"/json/getAreaTree?treeType=Areas",
"data" : function (n) {
return { id : n.attr ? n.attr("id") : 0 };
}
}
},
Некоторый код фильтра сервлета:
protected class GetAreaTreeContext extends ActionContext implements StreamResponseContext{
private byte[] bytes;
public GetAreaTreeContext() {
super("getAreaTree");
}
@Override
public byte[] getBytes() {
return this.bytes;
}
@Override
public String getContentType() {
return "application/json; charset=UTF-8";
}
@Override
protected boolean doAction() {
if (!getWebSessionObject().isValid())
return false;
Map<String,Object> p = getParameterMap();
String type = (String)p.get("treeType");
String id = (String)p.get("id");
if(id.equals("1") || id.equals("0") || id.equals("id1") || id.equals("id0")){ //get the tree only if request comes from initial situation (id=0) or the root (id=1)
try {
this.bytes = ObjectFactory.getInstance().getDbManager().getAreaFolderTree(type, phone).getBytes();
} catch (Exception ex) {
this.result = "";
}
return bytes.length > 0;
}else{
//init the array again so that when empty folders make ajax requests, they dont get the tree
this.bytes = new byte[0];
return true;
}
}
}
Как получить плагин jstree JSON_DATA для обработки скандинавских символов в кодировке UTF-8?