【问题标题】:How do I send a Windows-1255 encoded file using Express?如何使用 Express 发送 Windows-1255 编码文件?
【发布时间】:2018-10-10 16:58:22
【问题描述】:

我正在编写一个创建文本文件的 API。 它由要求文件使用Windows 1255 编码的旧版软件使用。 我正在从一个很好的旧 JavaScript 字符串创建文件的内容。

这是我到目前为止代码的相关部分:

var iconv = require('iconv-lite');
const str = 'Hello world, שלום עולם';
const encoded_str = iconv.encode(str, 'win1255', {addBOM: true});
response.status(200).send('data:text/plain;base64,' + Buffer.from(str, 'binary').toString('base64'));

它成功发送了一个文本文件。它的 ASCII 内容被保留下来,当我在记事本中打开它时可以很好地显示它,但是任何非 ASCII(想想:希伯来语)字符都是乱码。

我有一种直觉,它与 base64 转换有关。 (该文件稍后会使用 HTML <a href="..."> 标签打开)

【问题讨论】:

  • 请出示接收方和/或显示方,以便您的答案被理解为正确答案。
  • @TomBlodget 你是什么意思?

标签: javascript node.js express character-encoding iconv


【解决方案1】:

你的代码是正确的。

您看到乱码的原因更多地与您的 Windows 设置有关。

Windows-1255 是一个旧标准。这些天我们使用UTF(Unicode)。 与其他 Windows 代码页一样,Windows-1255 是 8 位 SBCS。

前 127 个值与 ASCII 兼容。其他的根据编码具有不同的含义。希伯来语编码赋予它们希伯来语含义,日语赋予它们日语含义,等等...... 没有足够的位来表示各种各样的符号。

如果您进入 Windows 设置并定义如何处理非 unicode 编码,它将改变前 127 位数字的含义。 去设置成希伯来语,你的内容就不会乱码了。

延伸阅读:Joel on Software - The absolute minimum every software developer absolutely positively must know about unicode and character sets, no excuses.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2010-10-08
    • 2011-10-16
    相关资源
    最近更新 更多