node.js - 使用 node.js iconv-lite 和 iconv 模块创建 ISO-8859-1 XML 时失败
问题描述
我试图在 ISO-8859-1 字符集中创建 XML 文件,但我无法将 UTF-8 文本字符串编码为 ISO-8859-1。
var xmlStr = '<!-- This line needs to be here to test äöå -->';
var Iconv = require('iconv').Iconv;
var iconv = new Iconv('UTF-8', 'ISO-8859-1');
var xmlStr = iconv.convert(xmlStr);
使用 iconv-lite 时也会发生同样的事情
var xmlStr = '<!-- This line needs to be here to test äöå -->';
var iconv = require('iconv-lite');
xmlStr = iconv.encode(new Buffer(xmlStr), "ISO-8859-1");
然而,如果我在标签之外添加额外的字符(使用两个模块),编码工作正常。在这种情况下,即使标签内的字符也被正确编码。
var xmlStr = 'ö<!-- This line needs to be here to test äöå -->';
var iconv = require('iconv-lite');
xmlStr = iconv.encode(new Buffer(xmlStr), "ISO-8859-1");
我用它来创建要通过 express 下载的动态 XML 文件
res.set("content-type", "application/xml; charset=iso-8859-1");
res.set("Content-Disposition", "attachment;filename=file.xml");
res.set('transfer-encoding', 'binary');
res.send(xmlStr);
我猜开头的字母告诉“某人”从哪里进行编码,但它不够聪明,无法理解来自 xml 标记内部的字母,因为大多数字符串都适用于两个字符集。
解决方案
推荐阅读
- javascript - JavaScript 验证多个输入框
- c++ - 优化将 std::uint32_t 插入 std::vector
- android - 辅助功能回调 - 当对讲完成阅读公告时
- java - 二维数组中的越界异常
- gradle - 复制到子文件夹后找不到 Gradle 任务
- html - 桥元数据面板在 Web 浏览器中可用?
- python - 如何计算 discord.py 反应(不加计数!)
- java - spring 框架(Java)中是否有与 phpinfo 等价的东西?
- java - 使用正则表达式拆分 JSON 有效负载以获得价值
- promise - 从 Promise 到 async/await 的 Vuex 存储操作