自做了一个android小程序,用于访问本地的一个web项目下的一个网页。
用浏览器去访问该该网页能够正常显示中文,而用android程序通过流去读取该网页,
中文会被 "南少林" 之类的代码替代。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s" %><s:property value="str"/>web网页如上: <s:property value="str"/> 通过浏览器访问会显示如下语句
[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}] 通过 android 程序读取网页信息代码如下: public static String getHtml(String textsrc) throws Exception {
URL url=new URL(textsrc);
HttpURLConnection URLConnection=(HttpURLConnection) url.openConnection();
URLConnection.setConnectTimeout(5000);
URLConnection.setRequestMethod("GET");
byte by[];
if(URLConnection.getResponseCode()==200)
{
InputStream inputStream=URLConnection.getInputStream();
by=Inpututil.getinput(inputStream);
inputStream.close();
return new String(by);
}
return null;
}
public class Inpututil { public static byte[] getinput(InputStream input) throws Exception {
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
byte by[]=new byte[1024];
int len=0;
while((len=input.read())!=-1)
{
input.read(by);
outputStream.write(by);
}
input.close();
byte bt[]=outputStream.toByteArray();
System.out.println(new String(bt,"GBK"));//想在这里输出与浏览器中一样的内容,可输出乱码,求解
return bt;
}}
用浏览器去访问该该网页能够正常显示中文,而用android程序通过流去读取该网页,
中文会被 "南少林" 之类的代码替代。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s" %><s:property value="str"/>web网页如上: <s:property value="str"/> 通过浏览器访问会显示如下语句
[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}] 通过 android 程序读取网页信息代码如下: public static String getHtml(String textsrc) throws Exception {
URL url=new URL(textsrc);
HttpURLConnection URLConnection=(HttpURLConnection) url.openConnection();
URLConnection.setConnectTimeout(5000);
URLConnection.setRequestMethod("GET");
byte by[];
if(URLConnection.getResponseCode()==200)
{
InputStream inputStream=URLConnection.getInputStream();
by=Inpututil.getinput(inputStream);
inputStream.close();
return new String(by);
}
return null;
}
public class Inpututil { public static byte[] getinput(InputStream input) throws Exception {
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
byte by[]=new byte[1024];
int len=0;
while((len=input.read())!=-1)
{
input.read(by);
outputStream.write(by);
}
input.close();
byte bt[]=outputStream.toByteArray();
System.out.println(new String(bt,"GBK"));//想在这里输出与浏览器中一样的内容,可输出乱码,求解
return bt;
}}
解决方案 »
- 关于android使用xmpp实现数据推动
- 在onResume()中调用getIntent()得不到Extra的问题,求高手解答!!!
- app widget上面的一个button按钮,怎么可以捕获它的长按后者滑动呢?
- 动态添加删除控件,用setTag()无法解决,求方法
- 关于getParent的问题
- 可以安装在Androrid2.3的无线上网卡?
- 求介绍一本android 2.0或更高版本的中文书籍
- 如何修改RadioGroup 或 radiobuttom的样式?在线求助
- button和view控件求教,模拟器中老出现has stopped
- 一个很奇怪的问题,了解一下吧?
- 自定义适配器的问题?
- android 中java层怎么在新建的分区上存储数据?
把这句话转码看看吧!GBK和utf-8都试下。好久都没弄过JSP了,都忘的差不多了。
System.out.println(new String(bt,"GBK"));
这段代码输出的不是乱码,其实是源码如下:[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}]
但我想它显示成
[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}] 怎么办呀
显示的是[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}]但是网页上显示的是[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}]
<%@ taglib uri="/struts-tags" prefix="s" %><%request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");%> <s:property value="src"/>
<s:property value="str"/>
还是不行
<%@ taglib uri="/struts-tags" prefix="s" %><%
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");%>S{src}
android下的String默认是utf-8,只要记住这个,应该就么问题了吧
你可以试下new String("gbk")
另外你可以上网搜一下某个方法,这个方法是给它一个string,他会自己判断是哪种编码,再返回一个对应编码的字符串给你
在网页显示上都一样,但是在源代码中会有差异看来struts2标签还是有差距的
想说的是问题不出在android身上,在前半段即访问web网页时网页显示的内容和通过查看源代码的内容不一样