+ Yanıtla
Toplam 9 sonuçtan 1 ile 9 arası olanlar

Konu Başlığı: XMLHTTP Türkçe Karakter Sorunu

  1. #1

    XMLHTTP Türkçe Karakter Sorunu

    XMLHTTP ile herhangi bir siteden veri çektiğimde Türkçe karakterler bozuıluyor.

    Her yeri aradım (MSND, web, iy, zoque, aspnerdir vs.) ancak bu konuda bir cevap bulamadım.

    Esas sorun gelen karakterlerin ? işaretine dönüyor olması yani her bilinmeyen karakter bir (?)soru işareti olarak gözüküyor.

    Basit şekilde kod şöyle
    Kod:
    Set xobj = server.CreateObject("Microsoft.XMLHTTP")
    	xobj.Open "GET", "http://www.zoque.net", false
    	xobj.Send
    	sayfa =  xobj.ResponseText
    
    Response.Write sayfa
    
    Bu sorunu nasıl çözebilirim ? Fikri olan var mı ?

    Bir de XMLHTTP için adam akıllı referans babında bir site / doküman da bilen varsa sevinirim.
    FERRUH.MAVİTUNA - İnanmıyorum, yeni site!

  2. #2

    Re: XMLHTTP Türkçe Karakter Sorunu

    Aynı sorunu bende yaşıyorum. Yeni konu açmayayım dedim.
    Adam akıllı ingilizce kaynak bile bulamadım. Ya da aramasını bilmiyorum..

    Türkçe karakter problemini çözen yok mu?

  3. #3

    Re: XMLHTTP Türkçe Karakter Sorunu

    Alıntı kaynak adresi hatırlamıyorum!

    Kod:
    Function BinaryToString(Binary) 
    	Dim cl1, cl2, cl3, pl1, pl2, pl3 
    	Dim L 
    		cl1 = 1 
    		cl2 = 1 
    		cl3 = 1 
    		L = LenB(Binary) 
    	Do While cl1<=L 
    		pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1))) 
    		cl1 = cl1 + 1 
    		cl3 = cl3 + 1 
    	If cl3>300 Then 
    		pl2 = pl2 & pl3 
    		pl3 = ""
    		cl3 = 1 
    		cl2 = cl2 + 1 
    	If cl2>200 Then 
    	pl1 = pl1 & pl2 
    	pl2 = "" 
    	cl2 = 1 
    	End If 
    	End If 
    	Loop 
    	BinaryToString = pl1 & pl2 & pl3 
    End Function
    
    Kullanım (ResponseText yerine ResponseBody kullanıyoruz! )
    Kod:
    sayfa =  BinaryToString(xobj.ResponseBody)
    
    Bu fonksiyonla HTML çekip parse ediyorum sorunuz çalışıyor...

  4. #4

    Re: XMLHTTP Türkçe Karakter Sorunu

    xobj.open .... altına

    " xobj.setRequestHeader("Content-Type",
    "application/x-www-form-urlencoded; charset=iso-8859-9"); " yazarak denermisin.

    Set xobj = server.CreateObject("Microsoft.XMLHTTP")
    xobj.Open "GET", "http://www.zoque.net", false
    xobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-9");
    xobj.Send
    sayfa = xobj.ResponseText

    Response.Write sayfa

  5. #5

    Re: XMLHTTP Türkçe Karakter Sorunu

    profiteror;
    yazmış olduğun kodu denedim yalnız sayfa hata verdi. Ben az ASP biliyorum ama ASP de sonu ; işareti ile biten bir cümle görmemiştim. Mantıklı gelmedi bana. Yine de ilgin için teşekkür ederim.

    arsende;
    vermiş olduğun fonksiyonu denedim ve sağlıklı biçimde çalıştı. Çok teşekkür ederim.
    Not : daha önce de denemiştim, galiba yanlış uygulamışım (:

  6. #6

    Re: XMLHTTP Türkçe Karakter Sorunu

    ben PHP ile kullanıyorum şu ana kadar bir sorun yaşamadım. ASP hakkında bir fikrim yok

  7. #7

    Re: XMLHTTP Türkçe Karakter Sorunu

    @arsende verdiğin kod için teşekkürler çalışıyor. Karakter sorun oluşturmadan çekebiliiyor.
    ben JavaScript kullandım.

    HTML Kodu:
    <script lianguage="vbscript">
    Function BinaryToString(Binary) 
    	Dim cl1, cl2, cl3, pl1, pl2, pl3 
    	Dim L 
    		cl1 = 1 
    		cl2 = 1 
    		cl3 = 1 
    		L = LenB(Binary) 
    	Do While cl1<=L 
    		pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1))) 
    		cl1 = cl1 + 1 
    		cl3 = cl3 + 1 
    	If cl3>300 Then 
    		pl2 = pl2 & pl3 
    		pl3 = ""
    		cl3 = 1 
    		cl2 = cl2 + 1 
    	If cl2>200 Then 
    	pl1 = pl1 & pl2 
    	pl2 = "" 
    	cl2 = 1 
    	End If 
    	End If 
    	Loop 
    	BinaryToString = pl1 & pl2 & pl3 
    End Function
    </script>
    
    <button onclick="alert(BinaryToString(xmlhttp.ResponseBody))">Kaynağı getir.</button> 

    Denemeye çalıştığım tam kod da bu:
    HTML Kodu:
    <script>
    function getElement(psID) { 
       if(document.all) { 
          return document.all[psID]; 
       } else { 
          return document.getElementById(psID); 
       } 
    }
    var xmlhttp;
    
    function icerikYukle(adres,parametre)
    {
    frames["icerik"].document.body.innerHTML="<h1>Yükleniyor...<\/h1>"
    var adres, zaman1, zaman2;
    zaman1 = new Date();
    xmlhttp=null
    // code for Mozilla, etc.
    if (window.XMLHttpRequest)
      {
      xmlhttp=new XMLHttpRequest()
      }
    // code for IE
    else if (window.ActiveXObject)
      {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
      }
    if (xmlhttp!=null)
      {
      xmlhttp.onreadystatechange=state_Change;
      xmlhttp.open("GET",adres,false)
      xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-9");
      xmlhttp.setRequestHeader("User-Agent", "MyCustomUser"); 
    
      xmlhttp.send(parametre)
      }
    else
      {
      alert("Your browser does not support XMLHTTP.")
      }
    zaman2=new Date();
    getElement('zaman').innerHTML=window.status = zaman2.getMilliseconds()-zaman1.getMilliseconds() + " ms yüklendi.";
    }
    say=1;
    function state_Change()
    {
    // if xmlhttp shows "loaded"
    //frames["icerik"].document.body.innerHTML=xmlhttp.readyState+'\n'+xmlhttp.status;
    if (xmlhttp.readyState==4)
      {
      // if "OK"
      if (xmlhttp.status==200)
        {
        }
      else
        {
        frames["icerik"].document.body.innerHTML+="<h1><br>Durum:"+xmlhttp.status+"<br>"+say+".deneme: XML verisini aktarırken sorun oluştu</h1><br>";say++;
        }
        frames["icerik"].document.body.innerHTML=BinaryToString(xmlhttp.ResponseBody)
        getElement("tarea").value=frames["icerik"].document.body.innerHTML;
        getElement("arama").value=xmlhttp.getAllResponseHeaders()
      }
        
    }
    
    
    
    function handleError() {
    	alert("hata var")
    	return true;
    
    }
    
    window.onerror = handleError;
    
    </script>
    <script language="vbscript">
    Function BinaryToString(Binary) 
    	Dim cl1, cl2, cl3, pl1, pl2, pl3 
    	Dim L 
    		cl1 = 1 
    		cl2 = 1 
    		cl3 = 1 
    		L = LenB(Binary) 
    	Do While cl1<=L 
    		pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1))) 
    		cl1 = cl1 + 1 
    		cl3 = cl3 + 1 
    	If cl3>300 Then 
    		pl2 = pl2 & pl3 
    		pl3 = ""
    		cl3 = 1 
    		cl2 = cl2 + 1 
    	If cl2>200 Then 
    	pl1 = pl1 & pl2 
    	pl2 = "" 
    	cl2 = 1 
    	End If 
    	End If 
    	Loop 
    	BinaryToString = pl1 & pl2 & pl3 
    End Function
    </script>
    <table width="100%">
    <tr>
    <td><input id="adrese" style="border:solid 1 green;" value="http://www.yahoo.com" style="width:400"></td>
    <td><button onclick="icerikYukle(getElement('adrese').value,'')">Sayfayı Getir</button>
    <button onclick="getElement('tarea').value=BinaryToString(xmlhttp.ResponseBody)">Kaynağı Aktar</button>
    <button onclick="getElement('tarea').value=frames['icerik'].document.body.innerText">Sayfadaki Metni al</button>
    <span id="zaman"></span>
    </td>
    </tr>
    <tr><td><textarea id="tarea" style="width:450;height:450;overflow:auto"></textarea></td>
    <td>
    <iframe name="icerik" style="width:500;height:450;"></iframe>
    </td></tr>
    </table> 
    Mesaj daddyguy tarafından 05.08.2007 (10:57) yeniden düzenlendi.

  8. #8

    Hata: İzin verilmiyor

    Kodu bilgisayarımda çalıştırabiliyordum. fakat internete yükeleyip siteden çalıştırmak istediğimde

    "İzin verilmiyor" diye br JavaScript hatası çıktı.
    site burada http://bektasaykut.googlepages.com/kaynakcek.html

  9. #9

    Re: XMLHTTP Türkçe Karakter Sorunu

    guvenlik nedeniyle standart olarak JavaScript XMLHTTP ile uzaktaki sunucuya veri yollanamiyor, local dosyalara istek yapilabiliyor.

    arka planda, bir PHP/ASP scriptine veri yollayip ondan donen veriyi ekrana basabilirsiniz.

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz