XmlHTTP Türkçe Karakter Problemi

Asp kodları XmlHTTP Türkçe Karakter Problemi Hazır program kodları hakkında bilgi paylaş; Bu konuda çok fazla soru sorulduğu için makale olarak yazmakta fayda gördüm. XmlHTTP ile veri çektiğ...
Cevapla
 
Seçenekler
  #1  
Arama 03-02-2008
Banlı
Üyelik Tarihi: 18/09/07
Mesajlar: 1.903
 
     WS-Ticareti: (1)
Blog Yazıları: 1
Teşekkürleri: 0
20 Msg. 27 Tşkr.
Rep Gücü: 0 B737 rep gücü epey yüksek

XmlHTTP Türkçe Karakter Problemi

Bu konuda çok fazla soru sorulduğu için makale olarak yazmakta fayda gördüm.
XmlHTTP ile veri çektiğiniz zaman türkçe karakter ler düzgün çıkmamaktadır.Bunun nedeni veriyi alırken "text" yöntemi ile alınıyor olması.Bunun yerine "Body" biçiminde alıcaz.Fakat bu veriyi ekrana yazdırırken sadece ? çıktığını görürsünüz.Bunun nedeni aldığınız verinin Binary olmasıdır.Bu binary'yi bir fonksiyon ile Text e çevirebilirsiniz.Bu şekilde kullanılırsa XmlHTTP de Türkçe karakter problemi ortadan kalkmaktadır.Çok fazla uzatmadan örnekle açıklayalım.

Normalde XmlHTTP ile veri alınırken :

<%
strURL = "http://www.asprehberi.net/"
Dim objXmlHttp
Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXmlHttp.Open "GET" , strURL , false

objXmlHttp.sEnd

strHTML = objXmlHttp.ResponseText
%>

gibi bir kod kullanırız.Bu kod ile veri alırsanız Türkçe karakterlerinizin ? şeklinde çıktığını görürsünüz.Bunun yerine BinaryToText isminde bir fonksiyon kullanacağız.

Fonksiyonumuz aşağıdadır.

******************** Fonksiyon Başlangıcı ********************

<%
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 Bitişi ********************


Bu fonksiyonu kullanmanız yeterli olmuyacaktır.Veri alırken üstte aldığımız gibi "ResponseText" yerine "ResponseBody" şeklinde alınması gerekiyor.Hepsini tek bir kod ile birleştirmek gerekirse


******************** Örnek Kod Başlangıç ********************
<%
strURL = "http://www.asprehberi.net/"
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 Bitiş ********************

En son yazılırken dikkat edeceğiniz üzere fonksiyonu kullanarak bu veriyi ekrana yazdırdık.Eğer kullanmaz iseniz bütün karakterleri ? şeklinde görürsünüz.
Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler


Benzer Konular
Konu Konu Açanlar Forum Cevaplar Güncel Mesajlar
türkçe karakter sorunu W-S Yeni Başlayanlara WebmasterSitesi 0 01-04-2008 09:05
Türkçe karakter kontrol B737 Asp kodları 0 03-02-2008 10:47
smf'de türkçe karakter sorunu. firatekinci SMF 2 29-01-2008 12:45
Türkçe Karakter Sorunu SANALman Mysql 0 10-01-2008 11:43
Türkçe Karakterleri İngilizce Karakter Yap Celebrian Delphi 0 24-12-2007 01:32

Link vermek için alttaki kodu sitenize ekleyebilirsiniz. Veya Ctrl+C ile Kopyalayınız
Örnek görünüm: Webmaster Sitesi