我正在使用 xml2js,因为我需要将 XML 提要转换为 JSON。但是当我收到 XML 时,它会按预期显示 Æ、Ø 和 Å。但是解析之后。
我收到:Ø 作为 \ufffd 或 �。
我已经将编码设置为 UTF-8,所以我不确定我做错了什么。谁能启发我:-)?
var fs = require('fs')
var https = require('https')
var xml2js = require('xml2js')
var parser = new xml2js.Parser()
router.get('/api/xml', (req, res) => {
https.get('urlForRequest', function (response) {
var response_data = '';
response.setEncoding('utf8');
response.on('data', function (chunk) {
response_data += chunk;
});
response.on('end', function () {
parser.parseString(response_data, function (err, result) {
if (err) {
console.log('Got error: ' + err.message);
} else {
res.json(result)
}
});
});
res.on('error', function (err) {
console.log('Got error: ' + err.message);
})
})
})
更新:
我试着按照你的步骤。如果我获取 XML 并将其存储在本地的 .xml 文件中,一切都会很好。但是,如果我从我的源(完全相同的 GET 请求)获取它,那么它就不起作用。
curl http://localhost:9090/products.xml -v > download.xml的响应
Connected to localhost (::1) port 9090 (#0)
GET /products.xml HTTP/1.1
Host: localhost:9090
User-Agent: curl/7.54.0
Accept: */*
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Thu, 07 Jun 2018 09:56:41 GMT
ETag: W/"9471b6-163d9ad4696"
Content-Type: text/xml; charset=UTF-8
Content-Length: 9728438
Date: Thu, 07 Jun 2018 10:00:09 GMT
Connection: keep-alive
将 curl 响应到“真实”源(如果重要,这是一个 https 请求)
User-Agent: curl/7.54.0
Accept: */*
HTTP/1.1 200 OK
Date: Thu, 07 Jun 2018 10:10:29 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
X-Powered-By: PHP/5.4.16
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
Content-Type: text/xml; charset=iso-8859-1