okhttp+gson+retrofit请求回来的中文数据乱码

注意我说的是,请求到移动端的数据乱码,不是请求到服务器端后,服务器拿到数据乱码,

网上找到的方案,要不就是解决post请求后,服务器端拿到数据乱码,要么就是解析时直接用okhttp 拿到respone后,自己设定编码格式解析,我找了一圈也没找到
retrofit设置请求回来数据解析的编码格式,

特此记录以防后面人采坑
我在查看retrofit设置gson解析时发现了这里


image.png

GsonConverterFactory 有一个responseBodyConverter方法


image.png

我们跟进去看下 GsonresponseBody是如何实现


image.png

看到重点了吧,我们指定编码格式即可

  @Override 
public T convert(ResponseBody value) throws IOException {
    JsonReader jsonReader = gson.newJsonReader(new InputStreamReader(value.byteStream(), "gbk"));
    try {
      return adapter.read(jsonReader);
    } finally {
      value.close();
    }
  }

你可能感兴趣的:(okhttp+gson+retrofit请求回来的中文数据乱码)