自做了一个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;
}}

解决方案 »

  1.   

    byte bt[]=outputStream.toByteArray();
    把这句话转码看看吧!GBK和utf-8都试下。好久都没弄过JSP了,都忘的差不多了。
      

  2.   

    其实 
    System.out.println(new String(bt,"GBK"));
    这段代码输出的不是乱码,其实是源码如下:[{id:110,name:&quot;&#22826;&#26497;&#23447;&#24072;&quot;,time:28},{id:111,name:&quot;&#21335;&#23569;&#26519;&quot;,time:38},{id:112,name:&quot;&#26970;&#30041;&#39321;&quot;,time:30}]
    但我想它显示成
    [{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}]  怎么办呀
      

  3.   

    我通过 网页查看源代码  
    显示的是[{id:110,name:&quot;&#22826;&#26497;&#23447;&#24072;&quot;,time:28},{id:111,name:&quot;&#21335;&#23569;&#26519;&quot;,time:38},{id:112,name:&quot;&#26970;&#30041;&#39321;&quot;,time:30}]但是网页上显示的是[{id:110,name:"太极宗师",time:28},{id:111,name:"南少林",time:38},{id:112,name:"楚留香",time:30}] 
      

  4.   

    那就到网页上面把你那value里面的str转码了,<% request.setCharacterEncoding("GBK");%> //像这样的。
     
      

  5.   

    <%@ page language="java" contentType="text/html; charset=GBK"  pageEncoding="GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s" %><%request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");%>        <s:property value="src"/>
            <s:property value="str"/>
    还是不行
      

  6.   

    我用EL表达式 试了下 尽然能行  怪事??????<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s" %><%
    request.setCharacterEncoding("GBK");
    response.setCharacterEncoding("GBK");%>S{src}
      

  7.   

       return new String(by);
    android下的String默认是utf-8,只要记住这个,应该就么问题了吧
    你可以试下new String("gbk")
    另外你可以上网搜一下某个方法,这个方法是给它一个string,他会自己判断是哪种编码,再返回一个对应编码的字符串给你
      

  8.   

    我是 用 struts2 标签取的 
    在网页显示上都一样,但是在源代码中会有差异看来struts2标签还是有差距的
      

  9.   


    想说的是问题不出在android身上,在前半段即访问web网页时网页显示的内容和通过查看源代码的内容不一样