[英]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.