不能用 url.openStream 下載 yahoo 中文

patrickip 2005-01-27 12:36:09
想請教一下我用 url class 下載一些 yahoo 中文網頁, 但不知為何不能顯示中文...

環境: os=windows xp with sp2, locale=hong kong, jdk=1.4.1, ide=eclipse3.0

code:

public class DownloadPage {
public static void main(String[] args) {
DownloadPage dp = new DownloadPage();
dp.download("http://hk.search.yahoo.com/search?p=stupid+yahoo&fl=0&vc=&x=wrt&meta=rst=hk&ei=BIG5&n=10");
}

public void download(String searchStr) {
try {
URL url = new URL(searchStr);
Reader r = new BufferedReader(new InputStreamReader(url.openStream(), "BIG5"));
Writer w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\temp\\a.html"), "UTF-8"));
char[] buffer = new char[4096];
int len;
while((len = r.read(buffer)) != -1)
w.write(buffer, 0, len);
r.close();
w.flush();
w.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

// end code

可下載 c:\temp\a.html 檔案, 但不能顯示中文, 謝謝高手幫忙!
...全文
175 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
patrickip 2005-02-03
算了, 放棄了, 謝謝各位!
回复
patrickip 2005-01-31
jockhuang(黄昏) 你好, 我下的是big5頁面, 用ie打開後所有中文字不見了, 英文字還在, 用notepad看html代碼也是一樣, 修改了code ...

import java.io.*;
import java.net.*;

public class DownloadPage {
public static void main(String[] args) {
DownloadPage dp = new DownloadPage();
dp.download("http://hk.search.yahoo.com/search?p=stupid+yahoo&fl=0&vc=&x=wrt&meta=rst=hk&ei=BIG5&n=10");
}

public void download(String searchStr) {
try {
URL url = new URL(searchStr);
// Reader r = new BufferedReader(new InputStreamReader(url.openStream(), "BIG5"));
InputStream r = url.openStream();
OutputStream w = new FileOutputStream("c:\\temp\\a.html");

// Writer w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\\temp\\a.html"), "UTF-8"));
byte[] buffer = new byte[4096];
int len;
while((len = r.read(buffer)) != -1)
w.write(buffer, 0, len);
r.close();
w.flush();
w.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

結果也是不能顯示中文, 我也嚐試開一個 socket, 用 http 1.1, 也跟足了所有header, cookie, 但也是不能成功, 唉... 謝謝以上各位幫助!
回复
Jock 2005-01-31
patrickip(pat^2)你下的是big5的页面?用ie打开看看中文显示正常否?
回复
patrickip 2005-01-31
謝謝 lxleaves(飘泊的叶子), 這是我之前試過了的, 沒有用, 甚至用了 byte array, 也一樣, 真是百思不得其解, 怀疑是 win xp 的問題...
回复
GJA106 2005-01-30
支持2楼的意见。
reader ,writer是字符流方式读写数据,在这过程中会产生一些信息变异,如同VC跟java交互时产生的字符乱码是一样的。
直接通过字节流来操作数据,可以避免这种问题(最多作一次字符集转换操作)
回复
lxleaves 2005-01-28
不要reader ,writer
InputStream r = url.openStream();
OutputStream w = new FileOutputStream("c:\\temp\\a.html");
回复
nwpulipeng 2005-01-27

是嘛?
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2005-01-27 12:36
社区公告
暂无公告