在 node.js 中从 url 读取 xml 文件:编码问题

Read xml file from url in node.js: encoding problem

我想使用下一个代码从 url 读取 xml 文件:

  var request = require("request");
  request.get(
    "http://regnskaber.virk.dk/27946272/ZG9rdW1lbnRsYWdlcjovLzAzLzMwLzllL2M3L2Y5LzUxYzQtNDZmNi04YzliLTdhODg1ODA0ZTdlNA.xml",
    function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body);
        // Continue with your processing here.
      }
    }
  );
 

在输出中我得到了下一个:

�������\D���<a>��4E��hQ�:!B��lu���u�ݶ�~^�Q�=<~��~ ���tq��#FUE+k���զj��_+��aNF�V�)M��E�O؍��V�c���c��r�n��U�����3����:�U���Fa�>�Qa\���+�����������W�;�^�FEi���F���Ū\W�9�
�������M����䯇��+�e����uvr\yR�P��mM�*��Ժ��6��^1>m�U����OV�a@ݣ8��        �3����f�>�Pp\��?���Nj�Nj����rqNZ�W[�;���O��Uw2\�O��.M�>e���4Ǵ����?F.��ώ�A;�P��oG��mS�|~ss��,(Y��JX�qJD����&W��,a��n���H��T��*Պ�an�u!&�T�R�VZ����Z����`�Y�a�

编码似乎有问题,但我无法识别编码并修复它。在浏览器中 xml 输出是正确的

使用 curl 访问端点会得到乱码数据,而不是 XML。查看 headers,content-encoding 设置为 gzip。所以这对我有用:

var request = require("request");
  request.get({
    method: 'GET',
    url: "http://regnskaber.virk.dk/27946272/ZG9rdW1lbnRsYWdlcjovLzAzLzMwLzllL2M3L2Y5LzUxYzQtNDZmNi04YzliLTdhODg1ODA0ZTdlNA.xml",
    gzip: true},
    function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body);
        // Continue with your processing here.
      }
    }
  );