XmlHTTP ile veri çektiginiz zaman türkçe karakter ler düzgün çikmamaktadir.Bunun nedeni veriyi alirken "text" yöntemi ile aliniyor olmasi.Bunun yerine "Body" biçiminde alicaz.Fakat bu veriyi ekrana yazdirirken sadece ? çiktigini görürsünüz.Bunun nedeni aldiginiz verinin Binary olmasidir.Bu binary'yi bir fonksiyon ile Text e çevirebilirsiniz.Bu sekilde kullanilirsa XmlHTTP de Türkçe karakter problemi ortadan kalkmaktadir.Çok fazla uzatmadan örnekle açiklayalim.
Normalde XmlHTTP ile veri alinirken :
<%
strURL = "http://www.aspforever.com/"
Dim objXmlHttp
Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXmlHttp.Open "GET" , strURL , false
objXmlHttp.sEnd
strHTML = objXmlHttp.ResponseText
%>
gibi bir kod kullaniriz.Bu kod ile veri alirsaniz Türkçe karakterlerinizin ? seklinde çiktigini görürsünüz.Bunun yerine BinaryToText isminde bir fonksiyon kullanacagiz.
Fonksiyonumuz asagidadir.
******************** Fonksiyon Baslangici ********************
<%
Private 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
%>
******************** Fonksiyon Bitisi ********************
Bu fonksiyonu kullanmaniz yeterli olmuyacaktir.Veri alirken üstte aldigimiz gibi "ResponseText" yerine "ResponseBody" seklinde alinmasi gerekiyor.Hepsini tek bir kod ile birlestirmek gerekirse
******************** Örnek Kod Baslangiç ********************
<%
strURL = "http://www.aspforever.com/"
Dim objXmlHttp
Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXmlHttp.Open "GET" , strURL , false
objXmlHttp.sEnd
strHTML = objXmlHttp.ResponseBody
Private 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
Response.Write BinaryToString(strHTML)
%>
******************** Örnek Kod Bitis ********************
En son yazilirken dikkat edeceginiz üzere fonksiyonu kullanarak bu veriyi ekrana yazdirdik.Eger kullanmaz iseniz bütün karakterleri ? seklinde görürsünüz.
Bu sekilde XmlHTTP Türkçe karakter problemi ortadan kalkmaktadir.iyi kullanimlar.
Ben de Yorum Yapmak İstiyorum