使用UTF-8时,JSON被识别为无效的流

时间:2016-03-10 06:38:04

标签: javascript json node.js

我正在尝试使用流解析大型JSON文件。如果文件是用ANSI编码我没有问题,但如果文件是UTF-8格式,它会抛出一个错误:

  

stream.js:74个
  扔掉//管道中未处理的流错误。
        ^
  错误:无效的JSON(状态为STOP时位置0处的意外“ï”)

我失败的代码部分看起来像这样:

fileStream = fs.createReadStream(jsonfile, { encoding: 'utf8' });
                        fileStream.pipe(JSONStream.parse('*'))
                            .pipe(es.through(function (data) { .....

任何想法为什么它不能识别格式?

1 个答案:

答案 0 :(得分:1)

这似乎是在UTF-8文件开头的字节顺序标记“”的麻烦。 (见https://en.wikipedia.org/wiki/Byte_order_mark

您可以尝试使用解决方案将开始指针位置设置为0到3.我认为这是非常hacky,但这是一种方法。

请参阅https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options了解如何操作以及进一步的信息。