我正在编写一个创建文本文件的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转换有关。(该文件稍后将使用超文本标记语言<a href="...">标记打开)
发布于 2018-10-10 16:58:22
您的代码是正确的。
您看到乱码字符的原因更多地与您的Windows设置有关。
Windows-1255是一个旧标准。现在我们使用UTF (Unicode)。与其他Windows代码页一样,Windows-1255也是8位SBCS。
前127个值与ASCII兼容。另一种则基于编码而采用不同的含义。希伯来语编码给了他们希伯来语的含义,日语给了他们日语的含义,等等。没有足够的比特来表示各种各样的符号。
如果您转到Windows设置并定义如何处理非unicode编码,它将更改前127个数字的含义。去把它设置为希伯来语,你的内容就不会再乱码了。
https://stackoverflow.com/questions/52735820
复制相似问题