问题描述
我似乎无法解决这个问题,我尝试了一堆不同的编码和包来完成它,但仍然失败......
我在 Node.js 中有一个包含双字节字符(瑞典语 Å、Ä 和 Ö)的文本(转换后的发票),注销时完全没问题:
我需要将它写入一个文件(在 SFTP 服务器文件系统上)作为“latin1”(即“ANSI”),这里是出错的地方,因为双字节字符最终会变成“正方形”或文件中的问号。
var Iconv = require('iconv').Iconv;
var iconvl = require("iconv-lite");
var iconv = new Iconv('UTF-8','ISO-8859-1');
var buffer = iconv.convert(params.Body);
var buffer2 = iconv.convert(Buffer.from(params.Body));
var buf = iconvl.encode(params.Body,"ascii");
const fs = require('fs');
fs.writeFileSync("/tmp/test.txt",buf,{
encoding: "binary"
});
fs.writeFileSync("/tmp/test2.txt",params.Body,{
encoding: "utf-8"
});
fs.writeFileSync("/tmp/test3.txt",buffer2,{
encoding: "latin1"
});
在测试/代码文件中,test2.txt
是可以的,但作为“utf-8”,字符完好无损,但没有任何“转换”文本是可以的。文件 text.txt
和 text3.txt
打开为“ANSI”但带有损坏的字符,例如“T�li� 芬兰�yj”。
查看文件为“utf-8”,字符为“Töli䠆inland ֹj”,因此编码错误...
我在这里遗漏了什么,我怎样才能对这个文件进行排序,使文件是“ANSI”,其中的字符完好无损?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)