关于android客户端解析json,出现乱码 ( 没有中文 ) -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于android客户端解析json,出现乱码 ( 没有中文 )

2016-03-12 14:42:56 2328 1

本人使用Tomcat apache-tomcat-8.0.28虚拟服务器,默认utf-8编码

update.json

{"versionName":"2.0","versionCode":2,"description":"Hello word!!","downloadUrl":"http://www.baidu.com"}

android studio 1.3.1 做了个客户端:部分编码如下:

private void checkVersion(){
 new Thread(){
 @Override
 public void run() {
            try {
                URL url = new URL("http://10.0.2.2:8080/update.json");
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(5000);
                conn.setReadTimeout(5000);
                conn.connect();

                int responseCode = conn.getResponseCode();

                if(responseCode==200){
                    InputStream inputStream = conn.getInputStream();
                    String result = StreamUtils.readFromSteam(inputStream);
                    Log.e("System.Out.Print", "result:"+result);

                    //解析Json

                    JSONObject jo = new JSONObject(result);
                    mVersionName = jo.getString("versionName");
                    mVersionCode = jo.getInt("versionCode");
                    mDescription = jo.getString("description");
                    mDownloadUrl = jo.getString("downloadUrl");


                    Log.e("System.Out.Print", "run "+mVersionName+";"+mVersionCode);
                    Log.e("System.Out.Print", "run "+mDescription+";"+mDownloadUrl);
                }

            } catch (MalformedURLException e) {
               // utl错误的异常

                e.printStackTrace();
            } catch (IOException e) {
                //网络错误的异常

                e.printStackTrace();
            }
            catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }.start();
}


public class StreamUtils {
/**
 * readFromSteam() 将输入流读成String后返回
 * @return
 */
public static String readFromSteam(InputStream in) throws IOException {

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int len = 0;
    byte[] buffer = new byte[1024];

    while((len=in.read())!=-1){
        out.write(buffer,0,len);
    }
        String result = out.toString();
        in.close();
        out.close();
    return result;
    }

}
每次运行后的结果如下:

看一下下面这个图片吧!
http://img.ask.csdn.net/upload/201602/21/1456069188_115538.jpg

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 19:00:52

    在用HttpURLConnection的时候,没有设置默认编码,可能是utf-8和 "ISO-8859-1"混淆了。
    然后模拟器和手机不一样的原因是;Android版本不一样导致HttpURLConnection的具体实现不一样,记得Android4.4之后,HttpURLConnection底层采用HttpOK了。

    0 0
相关问答

1

回答

json数据怎么解析的

2018-05-10 20:00:09 1165浏览量 回答数 1

1

回答

json数据怎么解析

2018-05-10 19:59:05 1893浏览量 回答数 1

1

回答

json数据解析问题求解答

2016-07-06 17:54:08 1661浏览量 回答数 1

1

回答

利用shell将json数据解析后排序问题

2016-06-17 16:56:40 2427浏览量 回答数 1

1

回答

map<String,Model>转成json数据后要怎么解析?

2016-03-20 11:19:30 2669浏览量 回答数 1

1

回答

JSON数据如何转换为时间格式?

2016-03-09 12:57:50 1899浏览量 回答数 1

1

回答

关于利用shell将json数据解析后排序问题

2016-03-05 12:06:49 3528浏览量 回答数 1

1

回答

Android这样的JSON数据应该怎么解析。

2016-07-07 11:01:54 1880浏览量 回答数 1

1

回答

Android UI 界面的问题

2016-06-06 12:44:25 1682浏览量 回答数 1

1

回答

关于android webview加载页面出现样式的问题

2016-03-20 09:50:05 1835浏览量 回答数 1
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载