Προς το περιεχόμενο

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • 0
gv

java και import σελίδας στα κυριλλικά

Ερώτηση

Προσπαθώ να κάνω αυτό που γράφει ο τύπος εδώ

http://forum.brighthand.com/showthread.php?p=1596095

 

αλλά τα αρχεία που παράγονται αντί γιά κυριλλικά εμφανίζουν ερωτηματικά όπως εδώ

http://img221.imageshack.us/img221/9206/83759886wc5.jpg

 

έχω εγκαταστήσει το java jdk 1.6.0_04

 

κάτι προφανώς παίζει με τα encodings αλλά τί ?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

4 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

Προσπάθησε να θέσεις κάποια properties για encoding και ξαναδοκίμασε.

 

-Dfile.encoding=<το encoding που χρειάζεσαι>

 

Αν αυτό δεν πετύχει δοκίμασε να θέσεις το encoding στον writer που χρησιμοποιείς.

 

Και επίσης σιγουρέψου ότι το πρόγραμμα που χρησιμοποιείς για να δεις τα html αρχεία (τον κώδικα) υποστηρίζει internationalization.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
Τί ακριβώς θέλεις να κάνεις;

 

Σώσε τον κώδικα σαν ForPDAruSimplifier.java

Από prompt δώσε javac ForPDAruSimplifier.java και παίρνεις το ForPDAruSimplifier.class ...

 

Aν δώσεις τώρα java ForPDAruSimplifier 30 60 1333 "4pda-"

τότε το προγραμματάκι κάνει το εξής ...

διαβάζει κάποιο thread (το νούμερο 1333) σε κάποιο ρώσσικο φόρουμ (4pda.ρυ) και σπάει στο thread σε κάποια αρχεία html τα οποία έχουν τέτοιο μέγεθος ώστε να τα μεταφράζει ολόκληρα το google translate ...

 

το μόνο πρόβλημα που έχω είναι ότι τα html αρχεία αντί για ρώσσικα (κυριλλικους χαρακτήρες) έχουν ερωτηματικά !!!

 

το 30 είναι ο αριθμός των posts ανά σελίδα και το 60=30*2 εαίναι μια μεταβλήτή ώστε το προγρ. να επεξεργάζεται 2 σελίδες από το thread ....

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

ο κώδικας είναι ο παρακάτω και το αρχείο html που κατασκευάζεται εμφανίζει τους κυριλλικούς χαρακτήρες με ερωτηματικά ...

μάλλον πρέπει να αλλάξω το encoding του string "line" bold-αρισμένο ... πως το κάνω αυτό σε java ?

 

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

class ForPDAruSimplifier
{
 public static void main(String[] s) throws Exception
 {
int STEPS = Integer.parseInt(s[0]);
int UPPER_LIMIT = Integer.parseInt(s[1]);
int TOPIC_NUMBER = Integer.parseInt(s[2]);
String FILENAME_PREFIX = s[3];

boolean alreadySeenFirstPost = false;

 for (int i=0; i<UPPER_LIMIT; i=i+STEPS)
 {	
	int innerCounter = 0;
	java.net.HttpURLConnection url = (java.net.HttpURLConnection)new java.net.URL("http://4pda.ru/forum/index.php?showtopic="+TOPIC_NUMBER+"&st="+i).openConnection();
      	url.connect();


  	DataInputStream dis = new DataInputStream (url.getInputStream());
      	String line;
     		PrintStream ps = new PrintStream (new FileOutputStream(FILENAME_PREFIX+returnNextFileCount(i / STEPS +1)+".html"));
	
	// print out the sufficient headers so that 1. Babelfish doesn't refuse the document 2. all browsers handle it as Russian
	ps.println("<html xml:lang=\"en\" lang=\"en\" xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <META HTTP-EQUIV=\"content-language\" CONTENT=\"ru\"> <meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1251\">  </head> <body>");

	String author = null;
      	while ( (line = dis.readLine()) != null)
     		{
     			// getting author + date
     			if (line.indexOf("<div align=\"center\"><a name='entry")!=-1)
		{

			if (alreadySeenFirstPost && innerCounter == 0) continue; // skip the first post if not the one at start
			int authorstartsat = line.indexOf("onmouseover=\"copyQ('")+"\"onmouseover=\"copyQ('".length()-1;
     				author = line.substring(authorstartsat, line.indexOf("'", authorstartsat+3));
			System.out.println("author:   "+author); 
			int datestartsat = authorstartsat + author.length()+ 3; 
			String date = line.substring(datestartsat, datestartsat+17);
			System.out.println(date); 
			ps.println("<TABLE width=\"100%\"><TR><TD width=\"50%\" bgcolor=#cccccc>"+author+"</TD><TD width=\"50%\" bgcolor=#cccccc>"+date+"</TD></TR>");
		}

		// post body
     			if (line.indexOf("<div class='postcolor'>")!=-1)
		{
			if (alreadySeenFirstPost && innerCounter++ == 0) continue; 
			[b]ps.println("<TR><TD COLSPAN=2 bgcolor=#eeeeee>"+line+"</TD></TR>");[/b]
			alreadySeenFirstPost = true; 
		}
      	} // while 
	ps.println("</TABLE> </body> </html>"); // close the file
	ps.close();      	
 } // for
} // main
static String returnNextFileCount(int i) 
{
		String nextNumberString = ""+i;
		if (nextNumberString.length() == 1) nextNumberString = "0"+nextNumberString;
		return nextNumberString;
}
}

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
×
×
  • Δημιουργία νέου...