返回信息流装的是jdk-7u25-windows-i586;eclipse-java-kepler-R-win32,代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class test {
//获取网页源代码
public String downloadPage(URL pageUrl) {
StringBuffer pageBuffer = new StringBuffer();
try {
// Open connection to URL for reading.
BufferedReader reader =
new BufferedReader(new InputStreamReader(pageUrl.openStream()));
// Read page into buffer.
String line;
pageBuffer = new StringBuffer();
while ((line = reader.readLine()) != null) {
pageBuffer.append(line);
}
} catch (Exception e) {
}
return pageBuffer.toString();
}
public static void main(String[] args) {
try {
URL url = new URL("http://m.byr.cn/article/Music/319349");
test shi = new test();
System.out.println(shi.downloadPage(url));
} catch (Throwable t) {
System.out.println(t.toString());
t.printStackTrace();
}
}
}
运行结果中出现像“<div class="sp">杩欐槸缁忓吀~<br/>銆?鍦?zhangxu1i2i 鐨勫ぇ浣滀腑鎻愬埌: 銆?br/>”的中文乱码,求大神们帮忙解决一下。
这是一条镜像帖。来源:北邮人论坛 / java / #27463同步于 2013/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
菜鸟求解答,Java编程爬取网页内容,结果出现中文乱码
zhaomw
2013/10/21镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
BufferedReader reader =
new BufferedReader(new InputStreamReader(pageUrl.openStream(),"UTF-8"));
【 在 zhaomw 的大作中提到: 】
: 装的是jdk-7u25-windows-i586;eclipse-java-kepler-R-win32,代码如下:
: import java.io.BufferedReader;
: import java.io.InputStreamReader;
: ...................
太牛了,灰常感谢
[ema11][ema11][ema11]
【 在 yanxuan 的大作中提到: 】
: [code=java]
: BufferedReader reader =
: new BufferedReader(new InputStreamReader(pageUrl.openStream(),"UTF-8"));
: ...................
有道理,[ema11]
【 在 zwan0518 的大作中提到: 】
: 字符流一般都会有编码控制的,好习惯就是初始化一个流的时候尽量声明字符编码。碰到不同的编码要不又要跪
两地方有网页编码信息 http头里面指定的编码和页面内的编码 ,页面内编码的优先级要大点, 有的script的括号区域里面还会定义自己的编码。我的笨办法是是先iso读出来,找到编码方式再解码一次
正解啊
[ema28]
【 在 hotcode 的大作中提到: 】
: 我想说其实上面提供的答案都不对,只是碰巧结果对了而已。
: 网页的编码不是固定的,正确的做法应该是先获取网页的编码方式,然后再用相应的编码方式解码。