![]() |
|
| |||||||
![]() |
| | Seçenekler |
|
#1
| |||
| | |||
XmlHTTP Türkçe Karakter ProblemiBu 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. |
![]() |
| 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 |