我有以下Angular工厂,它将请求发送到servlet(TOMCAT),而servlet又访问DB以发送/检索数据:
MyApp.factory('DB_Services', function($http , $q) {
var l_Result ;
var DB_Services = function(p_Query) {
var l_deferred = $q.defer();
var l_url = "http://localhost:8080/Services/Dispatcher?";
var l_params = 'request=' + JSON.stringify(p_Query) ;
console.log("DB_Services - l_params is: " + l_params ) ;
var req = { url: l_url, method:"POST", headers: { 'Content-Type': 'application/x-www-form-urlencoded'
}, data: l_params
} ;
console.log("DB_Services - req is: " + JSON.stringify(req) ) ;
$http(req ).
success(function(data, status, headers, config) {
console.log("DB_Services - Success; data is: " + JSON.stringify(data)) ;
l_deferred.resolve(data);
}).
error(function(data, status, headers, config) {
console.log("DB_Services - Error: " + data) ;
l_deferred.reject(status);
});
return l_deferred.promise;
} ;
return DB_Services;
});
该函数完美地工作“ALMOST”,是非拉丁字符作为“?”返回的唯一问题(至少现在)。我检查了TOMCAT日志,在那里我打印从DB检索到的内容并发送回客户端,所有非拉丁字符都显示正常。
我想我错过了告诉Angular / HTTP该响应是一个带有UTF-8字符编码的JSON。如果我的猜测是正确的,我该如何添加这些信息?
提前致谢。
答案 0 :(得分:0)
行。我找到了问题并解决了。我唯一需要做的就是在Servlet的DoPost函数中添加以下行:
request.setCharacterEncoding("UTF-8");
一旦完成,我现在收到所有正确字符的字符串(西里尔文,中文,阿拉伯文等)。
感谢this guy发布他的解决方案!!!