首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用文件系统在node.js中将ANSI文件文本转换为UTF8

使用文件系统在node.js中将ANSI文件文本转换为UTF8
EN

Stack Overflow用户
提问于 2016-12-13 23:35:36
回答 2查看 9.5K关注 0票数 1

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

我正在使用node的核心Fyle系统从文件中读取信息。有没有办法“告诉”readFile编码是ANSI的?

代码语言:javascript
复制
fs = require('fs');
        fs.readFile('..\\\\LogSSH\\' + fileName + '.log', 'utf8', function (err, data) {
            if (err) {
                console.log(err);
            }

如果不是,我如何转换该文本?

EN

回答 2

Stack Overflow用户

发布于 2016-12-13 23:52:11

当然,ANSI实际上不是一种编码。但是,无论我们讨论的是哪种确切的编码,我都看不到任何微软代码页包含在Buffers and Character Encodings文档中相对较短的列表中

  • ascii -仅用于7位ASCII码数据。这种编码速度很快,并且将剥离set.
  • utf8多字节编码的Unicode字符的高位。许多网页和其他文档格式使用UTF-8.
  • utf16le -2或4字节、低端编码的Unicode字符。代理项对(从supported.
  • ucs2到U+10FFFF)是'utf16le'.
  • base64 - Base64编码的别名。从字符串创建缓冲区时,此编码还将正确接受5.
  • latin1节中指定的"URL和文件名安全字母表“-将缓冲区编码为单字节编码字符串的一种方式(如RFC1345第63页中的IANA定义的那样,为拉丁语补充块和C0/C1控制codes).
  • binary - 'latin1'.
  • hex的别名-将每个字节编码为两个十六进制字符。

如果您在西欧工作,您可能会使用latin1作为Windows-1252的同义词,但是一旦您打印一个符号,它就会呈现不正确的结果。

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

票数 5
EN

Stack Overflow用户

发布于 2016-12-14 16:50:51

在我的例子中,类型之间的转换是由于需要使用特殊的拉丁字符作为‘i’或'ó‘。我解决了在fs.readFile()函数中将编码从'utf8‘改为二进制的问题:

代码语言:javascript
复制
 fs.readFile('..\\LogSSH\\' + fileName + '.log', {encoding: "binary"}, function (err, data) {
            if (err) {
                console.log(err);
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41124917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档