URLConnection下载网页碰到非charset=gb2312编码时出现乱码

JamOfCode 2010-05-27 05:04:10

URL url=new URL(et.url);
URLConnection connection=url.openConnection();
connection.setConnectTimeout(3000);
connection.setReadTimeout(3000);
connection.connect();

Scanner scanner=new Scanner(connection.getInputStream());
StringBuffer str=new StringBuffer();

//System.out.println(Thread.currentThread().getId()+"is on save String");
long curTime=System.currentTimeMillis();

for(;scanner.hasNextLine();)
{
//System.out.println(Thread.currentThread().getId()+"entering save String");
str.append(scanner.nextLine());
str.append("\n");
long durTime=System.currentTimeMillis();
if(durTime-curTime>3000)
{
break;
}
}



如果不是gb2312的编码 打印出来就是乱码。。。这个怎么解决????
...全文
329 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BearKin 2010-05-28
  • 打赏
  • 举报
回复
学习学习学习
lodachi 2010-05-28
  • 打赏
  • 举报
回复

//如果知道网页是什么编码 可以在包装流的时候指定字符集
Scanner scanner=new Scanner(connection.getInputStream(),"utf-8");
武津乐 2010-05-28
  • 打赏
  • 举报
回复
那个SringBuffer new的时候有个构造方法是可以指定编码的。
JamOfCode 2010-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lodachi 的回复:]
Java code

//如果知道网页是什么编码 可以在包装流的时候指定字符集
Scanner scanner=new Scanner(connection.getInputStream(),"utf-8");
[/Quote]

那我如何知道网页编码的类别呢??
冰思雨 2010-05-27
  • 打赏
  • 举报
回复
根据HTTP协议头部指定的编码方式,进行解码就可以了。如果HTTP头,没有编码内容,那就去HTML的META元素里面找,如果都找不到,自己定义一个默认编码进行解码好了。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧