我正在尝试读取包含'á'或'è'等扩展ascii字符的文件,但NodeJS似乎无法识别它们。
我试着阅读:
尝试不同的编码类型:
引用http://nodejs.org/api/fs.html
有没有办法让这项工作?
答案 0 :(得分:3)
我使用二进制类型来读取这些文件。例如
var fs = require('fs');
// this comment has I'm trying to read a file that contains extended ascii characters like 'á' or 'è',
fs.readFile("foo.js", "binary", function zz2(err, file) {
console.log(file);
});
当我将上述内容保存到foo.js中时,输出中会显示以下内容:
var fs = require('fs');
// this comment has I'm trying to read a file that contains extended ascii characters like '⟡ 漀爀 ✀',
fs.readFile("foo.js", "binary", function zz2(err, file) {
console.log(file);
});
上面的奇怪是因为我在emacs缓冲区中运行它。
答案 1 :(得分:2)
我试图读取的文件是ANSI编码。当我尝试使用'fs'模块的函数读取它时,它无法执行扩展ASCII字符的转换。
我刚才发现nodepad ++能够实际从某些格式转换为UTF-8,而不是仅使用UTF-8编码标记文件。
转换后,我能够很好地阅读它并将所需的所有操作应用到内容中。
感谢您的回答!
答案 2 :(得分:0)
我意识到这是一篇旧帖子,但我在个人搜索中找到了解决这一特定问题的方法。
我编写了一个模块,为Node Buffers提供扩展ASCII解码和编码支持。 You can see the source code here.这是我在浏览器中实现Buffer的一部分,我建立了一个名为BrowserFS的浏览器文件系统,但它可以100%独立于NodeJS(或Browserify)中的任何一个使用,因为它没有依赖。
只需将bfs-buffer
添加到您的依赖项中,然后执行以下操作:
var ExtendedASCII = require('bfs-buffer/js/extended_ascii').default;
// Decodes the input buffer as an extended ASCII string.
ExtendedASCII.byte2str(aBufferWithText);
// Encodes the input string as an extended ASCII string.
ExtendedASCII.str2byte("Some text");
或者,如果您不想为项目添加额外的依赖项,只需将模块调整到项目中即可。这是MIT许可。
我希望这可以帮助将来像我一样在搜索中找到此页面的任何人。 :)