问题使德国变音HTTP-POST请求(A○ü)或特殊字符(ß)使用的是Node.js(Problem

2019-10-21 13:00发布

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

我真是越来越螺母这样的:我要发布JSON的管理平台API发送通过CSV文件导入时间条目。 一切正常,直到我试图与德国变音符号(U形O)或特殊字符(SS)发送字符串。

我现在用的请求包用下面的代码:

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无效字节序列”。 我得到同样的错误,当我尝试通过后邮差的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的请求。

我究竟做错了什么?

文章来源: Problems making http-post requests with German umlauts (ä ö ü) or special chars (ß) with Node.js