Angular http post将非拉丁字符转换为?

时间:2016-01-24 13:29:43

标签: angularjs

我有以下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。如果我的猜测是正确的,我该如何添加这些信息?

提前致谢。

1 个答案:

答案 0 :(得分:0)

行。我找到了问题并解决了。我唯一需要做的就是在Servlet的DoPost函数中添加以下行:

request.setCharacterEncoding("UTF-8");

一旦完成,我现在收到所有正确字符的字符串(西里尔文,中文,阿拉伯文等)。

感谢this guy发布他的解决方案!!!