

Java Se İle İso-8859-9 Karakter Kodlu Html Sayfa Çekip Kaydetmek [Çözüldü]
-
Evet soru açık;
java se ile iso-8859-9 karakter encode'lu sayfayı alıp sayfa.html olarak kaydetmek istiyorum. Sıkıntı şu ki iso-8859-9 karakter kodlamalı sayfanın içeriğinde özel karakterler hep sorunlu çıkıyor. sayfa.html olarak kaydedip utf-8 olarak veya iso-8859-9 olarak görüntülemeye çalışıyorum sublime-text de, ancak başarılı olamadım.
Şunuda belirteyim, çektiğim dosyanın içeriğinde reg-exp ile değişikliklerde yapacağım.
URLConnection connection = null; try { connection = new URL("http://forum.memurlar.net/konu/2143287/1.sayfa").openConnection(); Scanner scanner = new Scanner(connection.getInputStream()); scanner.useDelimiter("\\Z"); siteContent = scanner.next(); }catch ( Exception ex ) { ex.printStackTrace(); } //site içeriği alındı şimdi mesaj sayisi ve sayfa sayisi alinsin. byte[] bytes = siteContent.getBytes("ISO-8859-9"); System.out.println(new String(bytes));Regexp ile şu şekilde arama yapıyorum.
String pattern = "Toplam (\\d+) mesaj"; // Create a Pattern object Pattern r = Pattern.compile(pattern); // Now create matcher object. Matcher m = r.matcher(MemurlarNetKonuIndirici.siteContent); if (m.find()) { MemurlarNetKonuIndirici.mesajSayisi = Integer.parseUnsignedInt(m.group(1)); } else { System.out.println("NO MATCH"); }Bu karakter sorununu çözemedim. Başka dil olmaz mı demeyin, javada yapmam lazım.
DrKill tarafından 11/Nis/16 02:48 tarihinde düzenlenmiştir -
scanner neden kullaniyorsun hocam inputreader kullanip dener misin?
http://stackoverflow.com/questions/4964640/reading-inputstream-as-utf-8
-
sorunun cevabını bilmiyorum ama şu kütüphane çok iş görüyo:
jsoup Java HTML Parser, with best of DOM, CSS, and jquery
jsoup.org/ -
Tamam gençler şu şekilde hallettim. Çok efektif olmadı aslında ama lazım olur diye yazıyorum. Her sayfa çağrımı için threadler kullanılabilir.
Teşekkürler yardımlar için.
String getCharsetPattern = "charset\\s*=[\\s\"']*([^\\s\"'/>]*)"; siteContent = new String(); URL url = new URL("http://forum.memurlar.net/konu/XXXXXXXX/1.sayfa"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), pageCharset)); //BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); LinkedList lines = new LinkedList(); String readLine; while ((readLine = in.readLine()) != null) { lines.add(readLine); //satır satır okuyoruz } PrintWriter out2 = new PrintWriter("memurlar.html"); for (String line : lines) { //out2.println(line); siteContent += "\n"+line; } //site içeriği alındı Pattern r = Pattern.compile(getCharsetPattern); Matcher m = r.matcher(MemurlarNetKonuIndirici.siteContent); if (m.find()) { //karakter kodlamasını utf-8 olarak değiştir. siteContent = siteContent.replaceFirst(m.group(1), "utf-8"); } else { System.out.println("NO MATCH"); } out2.print(siteContent); out2.close();
DrKill tarafından 11/Nis/16 02:47 tarihinde düzenlenmiştir