gv Δημοσ. 15 Ιανουαρίου 2008 Δημοσ. 15 Ιανουαρίου 2008 Προσπαθώ να κάνω αυτό που γράφει ο τύπος εδώ http://forum.brighthand.com/showthread.php?p=1596095 αλλά τα αρχεία που παράγονται αντί γιά κυριλλικά εμφανίζουν ερωτηματικά όπως εδώ http://img221.imageshack.us/img221/9206/83759886wc5.jpg έχω εγκαταστήσει το java jdk 1.6.0_04 κάτι προφανώς παίζει με τα encodings αλλά τί ?
gv Δημοσ. 16 Ιανουαρίου 2008 Μέλος Δημοσ. 16 Ιανουαρίου 2008 ο κώδικας είναι ο παρακάτω και το αρχείο 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; } }
gv Δημοσ. 17 Ιανουαρίου 2008 Μέλος Δημοσ. 17 Ιανουαρίου 2008 Τί ακριβώς θέλεις να κάνεις; Σώσε τον κώδικα σαν 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 ....
Γηρυόνης Δημοσ. 17 Ιανουαρίου 2008 Δημοσ. 17 Ιανουαρίου 2008 Προσπάθησε να θέσεις κάποια properties για encoding και ξαναδοκίμασε. -Dfile.encoding=<το encoding που χρειάζεσαι> Αν αυτό δεν πετύχει δοκίμασε να θέσεις το encoding στον writer που χρησιμοποιείς. Και επίσης σιγουρέψου ότι το πρόγραμμα που χρησιμοποιείς για να δεις τα html αρχεία (τον κώδικα) υποστηρίζει internationalization.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.