NodeJS扩展ASCII支持

时间:2012-07-17 18:35:40

标签: node.js encoding ascii

我正在尝试读取包含'á'或'è'等扩展ascii字符的文件,但NodeJS似乎无法识别它们。

我试着阅读:

  • 缓冲
  • 字符串

尝试不同的编码类型:

  • ASCII
  • 的base64
  • UTF8

引用http://nodejs.org/api/fs.html

有没有办法让这项工作?

3 个答案:

答案 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许可。

我希望这可以帮助将来像我一样在搜索中找到此页面的任何人。 :)