不能用 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 檔案, 但不能顯示中文, 謝謝高手幫忙!
...全文
250 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复

是嘛?

62,622

社区成员

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

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