EntityUtils.toString时前面多一个空字符%EF%BB%BF

阅读更多
一个url返回json格式数据的时候,指定了UTF-8
response.setContentType("application/json; charset=UTF-8");
但是只返回一个字符串,比如2.1
这时用httpclient去请求url获取结果的时候利用下面代码获取结果
String version = EntityUtils.toString(entity, Consts.UTF_8);

这个获取到的version前面是存在一个空字符的(%EF%BB%BF),拷贝到UltraEditor中可以看到2.1前面有个?,拷贝到浏览器地址栏就可以看到这个空字符(%EF%BB%BF)

这个空字符是UTF-8的BOM头

解决办法之一是在url中返回标准的json格式,比如用HashMap包装一下
Map version = new HashMap();
version.put("version", "2.01");
return context.toJsonResult(JSON.toJSONString(version));
然后在请求时再解析
String entityStr = EntityUtils.toString(entity, Consts.UTF_8);
String version = JSON.parseObject(entityStr,
             new TypeReference>(){}).get("version");

这样获取到的字符串是没有前面的空字符的



你可能感兴趣的:(%EF%BB%BF)