Nodejs:如何在 windows-1252 中发送 http 响应
Nodejs: how to send the http response in windows-1252
我有一个 nodejs 站点,有时它可以从数据库生成一个 XML 文件。问题是所有内容都在 utf-8 中,但对于这种特定情况,我需要内容和文件都在 windows-1252.
中
const W1252 = require('windows-1252'); //https://www.npmjs.com/package/windows-1252
...
r.header('Content-Disposition', 'attachment; filename=sample.xml');
r.header('Content-Type', 'text/xml; charset=windows-1252');
r.write(W1252.encode(`<?xml version="1.0" encoding="windows-1252"?><x>€Àáção</x>`, {
'mode': 'html'
}));
r.end();
...
但这不起作用。当客户端浏览器下载此文件时,它会将其保存为字符集 utf-8。我测试它:
file -i sample.xml
text/xml; charset=utf-8
浏览器响应 headers 提到 windows-1252。我不解!谁能告诉我我错过了什么?谢谢你。
我会使用 iconvlite:
global.ICONVLITE = require('iconv-lite');
res.header('Content-Disposition', 'attachment; filename=sample.xml');
res.header('Content-Type', 'text/xml; charset=iso8859-1');
res.write(ICONVLITE.encode(`<?xml version="1.0" encoding="windows-1252"?><x>Àáção</x>`, "iso8859-1"));
r.end();
我有一个 nodejs 站点,有时它可以从数据库生成一个 XML 文件。问题是所有内容都在 utf-8 中,但对于这种特定情况,我需要内容和文件都在 windows-1252.
中 const W1252 = require('windows-1252'); //https://www.npmjs.com/package/windows-1252
...
r.header('Content-Disposition', 'attachment; filename=sample.xml');
r.header('Content-Type', 'text/xml; charset=windows-1252');
r.write(W1252.encode(`<?xml version="1.0" encoding="windows-1252"?><x>€Àáção</x>`, {
'mode': 'html'
}));
r.end();
...
但这不起作用。当客户端浏览器下载此文件时,它会将其保存为字符集 utf-8。我测试它:
file -i sample.xml
text/xml; charset=utf-8
浏览器响应 headers 提到 windows-1252。我不解!谁能告诉我我错过了什么?谢谢你。
我会使用 iconvlite:
global.ICONVLITE = require('iconv-lite');
res.header('Content-Disposition', 'attachment; filename=sample.xml');
res.header('Content-Type', 'text/xml; charset=iso8859-1');
res.write(ICONVLITE.encode(`<?xml version="1.0" encoding="windows-1252"?><x>Àáção</x>`, "iso8859-1"));
r.end();