使用Node.js使用德语变音符号(äöü)或特殊字符(ß)发出http-post请求时出现问题

时间:2015-01-06 21:12:12

标签: node.js http utf-8 request http-post

TLDR;解决了,见下面的评论:)

我真的对此感到疯狂:我想将JSON发布到Redmine API以发送通过CSV文件导入的时间条目。一切顺利,直到我尝试用德语变音符号(äüö)或特殊字符(ß)发送字符串。

我正在使用请求包,其中包含以下代码:

var options = {
    url: self.getHost() + path,
    headers: {
        'Content-Type': 'application/json; charset=utf-8'
    },
    method: method
};

options.headers[self.getApiKeyHeader()] = self.getApiKey();

if (method !== HttpMethods.Get) {

    params.time_entry.comments = 'äöüß';

    options.body = JSON.stringify(params);
    options.headers['Content-Length'] = options.body.length;
}

并像这样发送:

request(options, function (error, response) {

    if (response.statusCode === 201) {

        console.log('Success');
    } 
    else {

        console.log('Error: ' + response.statusCode);
    }
});

我总是得到HTTP500错误,服务器日志说“UTF-8中的字节序列无效”。当我尝试通过Postman发布JSON时,我得到了同样的错误。由于我的同事对Ruby和PHP脚本没有任何问题,我想我的脚本中有一些非常错误的东西。还尝试了以下备选方案来设置options.body内容:

options.body = new Buffer(JSON.stringify(params), encoding='utf8');
options.body = new Buffer(JSON.stringify(params, 'ascii').toString('utf8');

两者都不起作用。

我正在使用https://www.npmjs.com/package/request来处理请求。

我做错了什么?

0 个答案:

没有答案