09 Eylül 2010 Perşembe

Kategoriler

Yazar'dan mesaj:

<%response.write "Asp Ögreniyorum"%>

Asp ögrenmek veya gelistirmek isteyenlerin sayfasi

Tavsiye ettigim yazilar

Son yazılar

Rasgele yazılar

Son yorumlar

Randevular

Randevum boş

XmlHTTP Türkçe Karakter Problemi

ASPFOREVER Yönetim - 26.01.2010 15:00:00 - Asp Kodlama

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.

"XmlHTTP Türkçe Karakter Problemi" konusuna 0 yorum yapılmış!


Ben de Yorum Yapmak İstiyorum

Yazmadan önce; Lütfen yazım kurallarına ve dilbilgisine dikkat edelim. Eğer yorumunuzun çok uzun olduğunu düşünüyorsanız (Bu en fazla 400 karakter olabilir.) 2 ayrı mesaj olarak yazabilirsiniz. Yorumlarınız için teşekkürler.


Yukarıda yazı olarak gördüğünüz sayıları rakam olarak yazınız.