android 发送GET请求 服务端接收乱码的问题
在android的编程中常会使用get/post请求,在用get请求的时候数据是直接放在url当中的
例如:
http://apicloud.mob.com/v1/weather/query?key=11bef58799140&city=南京
但是在android客户端这样写是拿不到正确的返回数据的。
原因是这样,通过浏览器向服务器发送get请求的时候默认的格式是 iso-8859-1
通过浏览器发送带有中文的个头请求:
http://apicloud.mob.com/v1/weather/query?key=11bef58799140&city=%E5%8D%97%E4%BA%AC
这里的
%E5%8D%97%E4%BA%AC 就是转码后的 南京
那么客户端向服务器发送get请求的时候如何将数据转码呢?
这里就会用到 URLEncoder.encode( s , String )
该方法包含两个参数:第一个参数: 是需要转码的文字(String 类型)
第二个参数: 是要转成的格式 例如utf-8(String 类型)
这是官方api的用法
public static String encode (String s)
Added in API level 1
This method was deprecated in API level 1.
Use encode(String, String) instead.
Equivalent to encode(s, "UTF-8").
该方法在使用时需要try catch 捕获异常;
String city = "南京"; try { city = URLEncoder.encode(city , "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }