NodeJs在api口音错误上发布请求

时间:2015-03-20 11:48:52

标签: node.js rest request

当我发布带有重音符号的json(如éè...)时,我遇到了问题,服务器发回400错误请求错误。我不知道如何解决这个问题。

bodyStr ='{"name":"ééé"}';
//headers
var headers = {
    'Content-Type': 'application/json',
    'Content-Length': bodyStr.length,
    'X-Key' : this.xkey
};

//http request
request({
    uri : this.httpHost + path, 
    method: method, 
    headers : headers, 
    body : bodyStr
},  
function (error, response, body) {
    if (!error && response.statusCode < 400) {
        if (typeof successCallback == "function") {
            successCallback(JSON.parse(body), response);
        }
    } else {
        if (typeof errorCallback == "function") {
            errorCallback(error || response.body || response.statusCode, response);
        }
    }
}
);

2 个答案:

答案 0 :(得分:2)

要解决此问题,您需要使用像iconv-lite(http://github.com/ashtuchkin/iconv-lite)之类的模块将字符串转换为utf-8,如下所示:

var iconv = require('iconv-lite');
bodyStr = iconv.encode(bodyStr, 'utf-8');

答案 1 :(得分:1)

您是否实施了RESTful服务?您是否在响应内容中有其他提示?

也许在标题Content-type中设置字符集(latin1)可以解决问题:

Content-Type: application/json; charset=iso-8859-1

希望它可以帮到你, 亨利