繁体   English   中英

使用JAVA从URL进行JSON解码

[英]JSON Decoding from URL with JAVA

我正在使用这段代码从URL中获取json并使用UTF8解码输入流

    try {
        InputStream is;
            is = new URL(url).openStream();
      BufferedReader rd = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
      StringBuilder sb = new StringBuilder();
      int cp;
      while ((cp = rd.read()) != -1) {
        sb.append((char) cp);
        System.out.println(cp + "  " + ((char) cp));
      }
      JSONArray json = new JSONArray(sb.toString());
      return json;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
    }

当我在网站http://www.somewebsite.com/data.json上运行它时,我得到了一堆胡言乱语

这是我回来的前两个字符(3和65533)

31
65533 \\ ufffd

我知道65533是替换字符,因此我在编码方面做错了。

我尝试将相同的json文本上传到另一个网站

http:// ex www.someotherwebsite.com/abcd可以正常解码。

我尝试下载两个文件,它们都是UTF8。 是因为一个是.json文件,而另一个不是。

尝试使用此方法Charset.forName("UTF-8").encode(your-data-in-string) 或者,如果此String在servlet中,并且您希望将其作为响应发送,则将setCharacterEncoding(“ UTF-8”)与response对象一起使用。

您只是在转换字符集。 如果要从url获取数据,则应在解析JSON字符串之前检查参数是否经过url编码和解码。

如果有人想知道,json文件不是utf-8。 我尝试使用utf-8进行gzip编码时进行解码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM