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来处理请求。
我做错了什么?