从远程服务器获取JSON文件(包含希伯来语值)并在Node.js中parsing它

我有一个dynamic的JSON文件托pipe在远程服务器(充当某种API),它也包含一些希伯来文字的值。

如何保存响应并parsing它为一个JSON对象?

这就是我迄今为止使用请求( https://www.npmjs.org/package/request ):

var options = { url: 'http://www.AWEBSITEHERE.com/file.json', method: 'GET' }; function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); // ... } } request(options, callback); 

而且这个代码在访问时给出以下错误:

 SyntaxError: Unexpected token � at Object.parse (native) at Request.callback [as _callback] (C:\Sites\node\proj\routes\inde x.js:21:29) at Request.self.callback (C:\Sites\node\proj\node_modules\request\ request.js:122:22) at Request.EventEmitter.emit (events.js:98:17) at Request.<anonymous> (C:\Sites\node\proj\node_modules\request\re quest.js:1019:14) at Request.EventEmitter.emit (events.js:117:20) at IncomingMessage.<anonymous> (C:\Sites\node\proj\node_modules\re quest\request.js:970:12) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 at process._tickCallback (node.js:415:13) 

我认为这个错误与服务器发送的BOM字符有关。

我怎么解决这个问题?

谢谢!

我想你可能必须解码de响应体(json):

 request(options, function (error, response, body) { if (!error && response.statusCode == 200) { body = body.toString('utf-8'); var info = JSON.parse(body); } } 

此外,如果这不起作用,也许身体被压缩,你必须解压缩之前解压:

 var encoding = response.headers['content-encoding'] if(encoding && encoding.indexOf('gzip')>=0) { body = uncompress(body); }