2012-11-20 37 views
0

有助於解決這裏的問題是腳本搜索互聯網並保存,但他讓它們保持錯誤的編碼,並且對於UTP-8,這裏是您可以插入程序代碼的地方,insert請(當保存頁面,其內容也是錯位的字符)文件編碼爲UTF-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>")); 
    } 

} 

回答

1

上添加@布賴恩·阿格紐的答案 -
它應該是,據我瞭解:

new Scanner(GetConn.getInputStream(),"UTF-8"); 
2

new Scanner(GetConn.getInputStream()); 

會從你的網頁的輸入流(面向字節的)。但是它使用JVM的默認編碼,而不是查看實際頁面本身的編碼。

我也許會使用像JTidy這樣的庫來正確解碼/解析HTML,然後請求頁面標題。上面的代碼可能非常脆弱。

+0

我有沒有必要程序UTF-8編碼的殘留文件 –