在 node.js 中使用 inf Fyle System 将 ANSI 文件文本转换为 UTF8

Asi*_*oso 1 javascript utf-8 fs node.js

我正在尝试将文本从 ANSI 编码文件转换为 node.js 中的 UTF8 编码文本。

我正在使用节点的核心 Fyle 系统从文件中读取信息。有什么方法可以“告诉” readFile 编码是 ANSI?

fs = require('fs');
        fs.readFile('..\\\\LogSSH\\' + fileName + '.log', 'utf8', function (err, data) {
            if (err) {
                console.log(err);
            }
Run Code Online (Sandbox Code Playgroud)

如果没有,我该如何转换该文本?

Álv*_*lez 5

当然,ANSI 实际上并不是一种编码。但无论我们谈论的是什么确切的编码,我都看不到任何 Microsoft 代码页包含在Buffers and Character Encodings中记录的相对较短的列表中:

  • ascii- 仅适用于 7 位 ASCII 数据。这种编码速度很快,如果设置,将剥离高位。

  • utf8- 多字节编码的 Unicode 字符。许多网页和其他文档格式使用 UTF-8。

  • utf16le- 2 或 4 个字节,小端编码的 Unicode 字符。支持代理对(U+10000 到 U+10FFFF)。

  • ucs2 - 'utf16le' 的别名。

  • base64- Base64 编码。从字符串创建缓冲区时,此编码还将正确接受 RFC4648 第 5 节中指定的“URL 和文件名安全字母表”。

  • latin1 - 一种将缓冲区编码为单字节编码字符串的方法(由 IANA 在 RFC1345 第 63 页中定义,作为 Latin-1 补充块和 C0/C1 控制代码)。

  • binary - 'latin1' 的别名。

  • hex - 将每个字节编码为两个十六进制字符。

如果您在西欧工作,您可能会想将latin1其用作 Windows-1252 的同义词,但只要您打印符号,它就会呈现不正确的结果。

所以答案是否定的,您需要安装像iconv-lite这样的第三方软件包。