Android 使用url获取数据时的文字编码问题

本文讨论了在使用百度地图的LBS云检索功能时遇到的中文编码问题,通过将中文部分单独转化为UTF-8再与其他部分拼装,成功解决了返回错误或无法找到结果的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天使用百度地图的LBS云检索的nearby时发现一直返回region错误或无法找到结果的返回结果,感觉很奇怪,

把log出来的URL贴到浏览器打开结果却是正确的。

 

一开始怀疑是编码问题于是把整个URL转化为UTF-8发现有错误。

 

后来解决的方法是:

把中文部分单独转化成UTF-8后再与URL其他部分拼装

 

 

	/**
	 * GET方式获取JSON数据
	 * @param type 查询类型 LOCAL周边检索输地名 NEARBY本地检索输坐标
	 * @param location nearby检索时的检索中心点坐标
	 * @param radius nearby检索时的检索半径 单位米
	 * @param region local检索时的检索地点 e.g. 北京市/福建师范大学/安徽省
	 * @return jsonStr 返回JSON数据的String值
	 * @throws Exception 
	 */
	public static String getParkData(String type,String location,int radius,String region) throws Exception{
		if (type.equals("NEARBY")) {
			path = SEARCH_URL_NEARBY + "?ak=" + API_KEY + "&geotable_id="
					+ GEOTABLE_ID + "&mcode=" + MCODE + "&location=" + location + "&radius="
					+ radius ;
		}else if(type.equals("LOCAL")){
			region = URLEncoder.encode(region, "UTF-8");
			path = SEARCH_URL_LOCAL + "?region=" + region + "&ak=" + API_KEY + "&geotable_id="
					+ GEOTABLE_ID + "&mcode=" + MCODE ;
		}else{
			return null;
		}
		Log.i("url", path);
		
//		path = URLEncoder.encode(path,"UTF-8");
		URL url = new URL(path);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setConnectTimeout(TIMEOUTMILL);
		connection.setRequestMethod("GET");
		
		if(connection.getResponseCode() == RESPONSESUCCESS){
			InputStream is = connection.getInputStream();
			byte[] data = readStream(is);
			String jsonStr = new String(data);
			Log.i("json", "json解析时的path : "+path);
			Log.i("json", "jsonStr: "+jsonStr);
			return jsonStr;
		}else{
			return null;
		}
	}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值