帮助解决这里的问题是脚本在互联网上搜索并保存,但他用错误的编码保存它们,并且对于UTP-8,这里是您可以在程序编码中插入的地方,请插入(当页面保存时,其内容也是损坏的字符)
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
public class url{
public static void main(String[] args) {
try {
URL PageUrl;
URLConnection GetConn = null;
GetConn = null;
Scanner sc = new Scanner(new File("C:\\test\\url.txt"));
String htmlPage;
while (sc.hasNext()){
htmlPage = sc.nextLine();
PageUrl = new URL(htmlPage);
GetConn = PageUrl.openConnection();
GetConn.connect();
// establish connection:
Scanner scUrl = new Scanner(GetConn.getInputStream());
StringBuffer sb = new StringBuffer();
while(scUrl.hasNext()){
sb.append(scUrl.nextLine());
}
scUrl.close();
String htmlFileName = ("C:\\test\\1\\"+title(sb.toString())+".html");
FileWriter FWriter = new FileWriter(htmlFileName);
BufferedWriter BWriter = new BufferedWriter(FWriter);
BWriter.write(sb.toString());
BWriter.close();
}// end try
sc.close();
}
catch (IOException io) {
System.out.println(io);
}
}
private static String title(String str){
return str.substring(str.indexOf("title>")+6, str.indexOf("</title>"));
}
}发布于 2012-11-20 19:29:38
这
new Scanner(GetConn.getInputStream());从你的网页获取一个输入流(面向字节)。但是它对JVM使用缺省编码,并且您看到的不是实际页面本身的编码。
我可能会使用像JTidy这样的库来正确地解码/解析HTML,然后向它请求页面标题。上面的代码可能非常脆弱。
https://stackoverflow.com/questions/13472154
复制相似问题