通过http获取字符串,解析后用TextView显示,中文乱码,求大神解答下 你那转换的地方根本没用。reault这个字符串里已经是乱码了,你转那么俩次跟没转一样,在流那块弄下试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 根据url调用web接口 * * @param url * 访问地址, 必备参数 * @param method * 请求方式post还是get, 默认get * @param params * 参数列表 post必备, 比如:"name=张三&age=18" * @param sessionInfo * 可以保持session, 默认不保持 * @param encoding * 编码格式, 默认UTF_8 * @param isLine * 得到的源码是否换行, 默认false * @return String */ public static String requestUrl(String url, String method, String params, String sessionInfo, String encoding, boolean isLine) { try { encoding = (ToolUtil.isBlank(encoding) ? CharEncoding.UTF_8 : encoding); method = (ToolUtil.isBlank(method) ? Constant.REQUEST_GET : method.toUpperCase()); String mathStr = "mathRandom=" + Math.random(); if (method.equals(Constant.REQUEST_GET)) { url += (url.indexOf("?") != -1 ? "&" : "?") + mathStr; if (!ToolUtil.isBlank(params)) { url += "&" + params; } } HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); if (!ToolUtil.isBlank(sessionInfo)) { connection.setRequestProperty("Cookie", sessionInfo); } connection.setRequestMethod(method); connection.setConnectTimeout(15000); connection.setReadTimeout(15000); if (method.equals(Constant.REQUEST_POST)) { connection.setDoOutput(true); params = (ToolUtil.isBlank(params) ? mathStr : params + "&" + mathStr); OutputStream output = connection.getOutputStream(); output.write(params.getBytes(encoding)); output.flush(); output.close(); } String result = FileUtil.readFile(connection.getInputStream(), encoding, 1, isLine); connection.disconnect(); return result; } catch (Exception e) { log.error("根据url调用web接口", e); throw new MvcException(e.getMessage()); } } public static void main(String[] args) { Date date = new Date(); System.out.println(requestUrl("http://hq.sinajs.cn/list=sh601006 ", "GET", null, null, "GBK", false)); System.out.println("本次调用web接口耗时" + (new Date().getTime() - date.getTime()) + "毫秒"); }输出结果:var hq_str_sh601006="大秦铁路,6.72,6.71,6.71,6.79,6.69,6.71,6.72,12584684,84810589,9700,6.71,165890,6.70,112400,6.69,129200,6.68,96400,6.67,137527,6.72,89100,6.73,205072,6.74,139592,6.75,582303,6.76,2014-05-22,15:04:39,00";本次调用web接口耗时109毫秒没有乱码 就是不会弄啊,大神指教指教啊String result = EntityUtils.toString(httpEntity, "utf-8"); 不用getContent那些步骤就可以获取,至于流里那块来转码还不是很清楚 就是不会弄啊,大神指教指教啊我日,弄错了,你这根本就不是utf-8,而是GBK! 你把这块加上编码就可以了BufferedReader reader = new BufferedReader(new InputStreamReader(is, "gbk")); 客户端转换时使用的字符编码要和服务器端的字符编码一致,一般选UTF-8 自定httpclient的时候可以设置编码规则 关于Android实时视频编解码方案选择的问题/h263?h264? 菜鸟2帖 【求教】SharePreferences数据无法保存的问题 avd manage无法获取package,怎么办 System.loadLibrary限制 Android利用shape设置边框 J2ME项目移植到Android需要考虑几方面 怎样缩小并截取图片不失真 求一款能够彻底锁住手机的app android手机录像过程中添加字幕或者图片,求开发思路 android 按键控制问题 RandomAccessFile.setLength()这个东东的作用是什么?
* 根据url调用web接口
*
* @param url
* 访问地址, 必备参数
* @param method
* 请求方式post还是get, 默认get
* @param params
* 参数列表 post必备, 比如:"name=张三&age=18"
* @param sessionInfo
* 可以保持session, 默认不保持
* @param encoding
* 编码格式, 默认UTF_8
* @param isLine
* 得到的源码是否换行, 默认false
* @return String
*/
public static String requestUrl(String url, String method, String params, String sessionInfo, String encoding,
boolean isLine) {
try {
encoding = (ToolUtil.isBlank(encoding) ? CharEncoding.UTF_8 : encoding);
method = (ToolUtil.isBlank(method) ? Constant.REQUEST_GET : method.toUpperCase());
String mathStr = "mathRandom=" + Math.random();
if (method.equals(Constant.REQUEST_GET)) {
url += (url.indexOf("?") != -1 ? "&" : "?") + mathStr;
if (!ToolUtil.isBlank(params)) {
url += "&" + params;
}
}
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
if (!ToolUtil.isBlank(sessionInfo)) {
connection.setRequestProperty("Cookie", sessionInfo);
}
connection.setRequestMethod(method);
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
if (method.equals(Constant.REQUEST_POST)) {
connection.setDoOutput(true);
params = (ToolUtil.isBlank(params) ? mathStr : params + "&" + mathStr);
OutputStream output = connection.getOutputStream();
output.write(params.getBytes(encoding));
output.flush();
output.close();
}
String result = FileUtil.readFile(connection.getInputStream(), encoding, 1, isLine);
connection.disconnect();
return result;
} catch (Exception e) {
log.error("根据url调用web接口", e);
throw new MvcException(e.getMessage());
}
}
public static void main(String[] args) {
Date date = new Date();
System.out.println(requestUrl("http://hq.sinajs.cn/list=sh601006 ", "GET", null, null, "GBK", false));
System.out.println("本次调用web接口耗时" + (new Date().getTime() - date.getTime()) + "毫秒");
}输出结果:var hq_str_sh601006="大秦铁路,6.72,6.71,6.71,6.79,6.69,6.71,6.72,12584684,84810589,9700,6.71,165890,6.70,112400,6.69,129200,6.68,96400,6.67,137527,6.72,89100,6.73,205072,6.74,139592,6.75,582303,6.76,2014-05-22,15:04:39,00";
本次调用web接口耗时109毫秒
没有乱码
就是不会弄啊,大神指教指教啊
String result = EntityUtils.toString(httpEntity, "utf-8"); 不用getContent那些步骤就可以获取,至于流里那块来转码还不是很清楚
就是不会弄啊,大神指教指教啊
我日,弄错了,你这根本就不是utf-8,而是GBK! 你把这块加上编码就可以了BufferedReader reader = new BufferedReader(new InputStreamReader(is, "gbk"));