Node.js请求将元音变为

我正在对Web服务执行以下请求(使用请求/请求):

return request.postAsync({ url, charset: 'Cp1252', // I also tried utf-8 encoding: null, // // I also tried Cp1252 -> unknown encoding, // I also tried utf-8 and nothing at all headers: { "Accept": "application/octet-stream, text, text/plain, text/xml", "Accept-Encoding": "UTF-8", 'Content-Type': "text/plain; charset=Cp1252;", // also tried utf-8, ISO-8859-1 "User-Agent": "me" } }).spread((res, body) => { body = body.toString(); // I also tried without toString(); let ws = fs.createWriteStream('hhh.csv'); ws.write(body); ws.end(); 

无论我做什么,变音都变成了

这些是Web服务发回的标题:

 'content-type': 'text; charset=Cp1252', 'content-length': '1895980', vary: 'Accept-Encoding,User-Agent' 

我试了几天,没有运气。 我究竟做错了什么?

以下是目前尚未解决问题的问题/答案列表:

  • 当获取请求时,变音器破碎
  • 使用德语变音符号(äöü)或带有Node.js的特殊字符(ß)发出http-post请求时出现问题
  • 从Node.js发送元音到iOS
  • Node.js HTTP客户端中的自动UTF-8编码
  • 自定义HTTP标头值 – 试图通过元音变音字符
  • 如何在Node.js中获得UTF-8?
  • 如何让i18next-node以正确的方式显示变音符号?
  • 我如何在Node.js中编码一些东西?

是否可以是以下之一导致我的inputstring不是UTF-8?

 let hash = crypto.createHmac("sha256", this.options.Signer); this.query['Signature'] = hash.update(stringToSign).digest("base64"); 

signer是一个包含0-9azAZ+/的string。

this.query['Signature']是URL的一部分。

我终于解决了这个问题,使用iconv-lite并将请求的编码设置为null ,使其以Buffer的forms返回。 这是我现在的工作configuration:

 return request.getAsync({ url, encoding: null, headers: { "Accept": "text, text/plain, text/xml", "Accept-Encoding": "UTF-8", 'Content-Type': "text/plain; charset=utf-8;", "User-Agent": "me" } }).spread((res, body) => { let a = iconv.decode(new Buffer(body), 'cp1252'); // now a is holding a string with correct Umlauts and ß