安卓在网络上请求数据时出现乱码的处理方法

本人菜鸟一枚,第一次写博客,就想谈谈这个乱码问题,因为只要一出现乱码,大家首先想到的肯定是编码格式,改变编码格式的方法其实挺多的,这里我就展示一下我在写代码时遇到的乱码情况和坑点。

      话不多说,直接上代码。

public class MyAsyncTask extends AsyncTask {

    private Gson gson;

    @Override
    protected Object doInBackground(Object[] objects) {
        try {
            gson = new Gson();
            URL url = new URL((String) objects[0]);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setReadTimeout(3000);
            connection.setConnectTimeout(3000);
            if (connection.getResponseCode() == 200) {
                InputStream inputStream = connection.getInputStream();
                Addbean addbean = gson.fromJson(new InputStreamReader(inputStream,"gbk"), Addbean.class);
                List<Addbean.ContentsBean> contents = addbean.getContents();
                return contents;
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
      注:(代码中红色部分不是报错而是需要注意的地方!)网络请求我用的是AsyncTask+HttpURLConnection,然而在接收解析完的数据后发生了乱码现象,当时楼主也是很纠结,于是乎就去百度,可是转来转去不是楼主看不懂就是没有用。最后忽然发现InputStreamReader的方法里在转流的时候,可以在后面跟上自己想要的编码格式,这样就好了。其实有时候解决问题的办法就在自己敲得代码中,只要认真找,一定可以解决问题。这是我第一次发博客,希望大家可以留下宝贵的意见,在这里先谢谢了。


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值