Javascript 尝试从API获取数据时遇到问号

Javascript 尝试从API获取数据时遇到问号,javascript,json,node.js,Javascript,Json,Node.js,我正在使用node webkit构建一个应用程序,每当我的国家出现警报时(我们目前处于战争中)都会提醒我。有一个网站提供包含当前报警信息的JSON文件当我尝试访问该页面并检查是否存在警报时,结果是出现了许多问号。我不能使用它,当我尝试JSON.parse数据时,它说它不能解析问号。我该怎么办 url: "http://www.oref.org.il/WarningMessages/alerts.json", checkAlert: function(callback) { request

我正在使用node webkit构建一个应用程序,每当我的国家出现警报时(我们目前处于战争中)都会提醒我。有一个网站提供包含当前报警信息的JSON文件
当我尝试访问该页面并检查是否存在警报时,结果是出现了许多问号。我不能使用它,当我尝试JSON.parse数据时,它说它不能解析问号。我该怎么办

url: "http://www.oref.org.il/WarningMessages/alerts.json",
checkAlert: function(callback) {
    request({ 
        uri: this.url,
        json: true,
        encoding: 'utf-8'

        }, function(err, res, json) { 
            if (err)
                return console.log(err);

            json = JSON.parse(json);
            var data = json.data;

            console.log('just checked. json.data: ' + data);

            if (data.length != 0) // if array is not empty
                callback(true);
            else
                callback(false);
    });
}
以下是该文件的外观:

{ 
"id" : "1405751634717",
"title" : "something in hebrew ",
"data" : []
}
非常感谢

看看这里:

首先要完全确定您的JSON文件实际上是用UTF-8编码的

您可能需要检查服务器是如何为这些JSON提供服务的,以及它们有哪些编码

另请检查此链接:

快速概述:

“V8当前仅接受BMP中的字符作为输入,使用UCS-2 作为内部表示(与JavaScript的表示相同 基本上,这意味着JavaScript使用UCS-2 内部字符编码,严格来说是16位格式, 这意味着它只能支持前65536 Unicode字符的代码点。任何落在外面的字符 在从UTF-8到UTF-8的转换过程中,该范围显然被截断 UCS-2,破坏字符流。就我而言(和其他许多人一样 我在研究中发现)当系统试图 将这些字符串序列化/反序列化为JSON对象。在 转换后,您可能会得到无效的字符序列 UTF-8。当浏览器看到这些断开的字符串出现时,他们会立即 中途中断连接,显然是一种安全措施。(一) 有点理解但很难解释, 因为这些关于字符编码的讨论让我头疼)


该API返回一个用
UTF-16-LE
编码的JSON响应,因此您必须告诉
request
使用该编码

但是,由于您试图查询Pikud Haoref的警报API,请查看npm上的
Pikud Haoref API
,为您完成以下任务:


(免责声明:我创建了此软件包)

谢谢!但是,如果我甚至不想要真正的希伯来文呢?我只想检查数组是否为空。我可以交替解析JSON吗?对于这一点,代码上的问题是条件:(data.length!=0)->JavaScript中的空数组为true,因此您的测试是错误的,请尝试通过这种方式检查(data.length!=0),这样,您实际上是在请求数据的length属性。您正在执行以下操作,请求data.length,这对于数组总是正确的,JS会自动进行转换和比较1!=0,这是错误的。这就是它在检查数组是否为空时失败的原因。