1 回答
因此,经过一些更深入的研究,我想出了解决问题的方法。
所有麻烦的原因似乎都在 axios 或类似的东西的后期处理中。这是在接收到数据并转换为文本之后以及在为我的 nodejs-application 生成响应之前不久关闭的步骤。
我所做的是将axios 的 GET 方法的“ responseType ”定义为“ ArrayBuffer ”。因此,需要对 axios 进行调整,如下所示:
var resArBuffer = await axios.get(
URL,
{
responseType: 'arraybuffer',
params: params,
headers: headers
}
);
由于 JavaScript 非常棒,ArrayBuffer 本身提供了一个 toString() 方法,通过自己的定义将数据从 ArrayBuffer 转换为 String:
var response = resArBuffer.data.toString("latin1");
另一件值得一提的是,我使用了“ latin1 ”而不是“ ISO-8859-1 ”。不要问我为什么,一些消息来源甚至建议使用“ cp1252 ”,但“ latin1 ”在这里适合我。
不幸的是,这还不够,因为我需要 UTF-8 格式的文本。使用“ toString('utf-8') ”本身也是错误的方法,因为它仍然会打印“�”-符号。解决方法很简单。我使用“ Buffer.from(...) ”来转换“ latin1 ” 将文本定义为“ utf-8 ” 文本:
var text = Buffer.from(response, 'utf-8').toString();
现在我得到了所需的 UTF-8 转换文本。我希望这个线程可以帮助其他人,因为这些信息对我来说散布在许多不同的线程中。