indy karakter sorunu.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

indy karakter sorunu.

Mesaj gönderen oklawa »

Selamlar.

IDHttp'nin get ve post yöntemlerini kullanarak gelen bilgileri ayıklıyorum.
Türkçe karakterlerde sorun çıkıyor. Eminim ingilizce harici tüm karakterlerde sorun çıkıyordur ama ihtiyacım sadece Türkçe.

IdHTTP ile bu forumdan alınmış örnek.

Kod: Tümünü seç

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. 
Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Bu da webbrowser'dan alınmış sorunsuz string.

Kod: Tümünü seç

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. 
Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Forumda mail gönderirken aynı sorunu yaşayan bir arkadaşın başlığını inceledim ama çözüm olmadı. Internette de bu sorunla bir çok başlık var, tabi çözüm yok.

Sorunu giderebilmenin bir yolu var mı?
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: indy karakter sorunu.

Mesaj gönderen conari »

Ben de mailde yaşıyordum ama bu mesajdan sonra sorunum kalktı.

Kod: Tümünü seç

AttachmentEncoding = 'MIME'
    ContentType = 'text/html'
    ContentTransferEncoding = 'iso-8859-9'
    Encoding = meMIME
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Re: indy karakter sorunu.

Mesaj gönderen oklawa »

IdHTTP için bu kodu nereye yazabilirim?

Kod: Tümünü seç

AttachmentEncoding = 'MIME'
    ContentType = 'text/html'
    ContentTransferEncoding = 'iso-8859-9'
    Encoding = meMIME
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: indy karakter sorunu.

Mesaj gönderen conari »

IDhttp şu şekilde

Kod: Tümünü seç

    IdHTTP1.Request.ContentType := 'text/html'
    IdHTTP1.Request.AcceptEncoding:= 'iso-8859-9'
    IdHTTP1.Request.ContentEncoding := 'iso-8859-9'
olabilir.

birde Options kısmında hoForceEncodeParams =true olarak kullan.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
oklawa
Üye
Mesajlar: 68
Kayıt: 01 Oca 2008 02:53

Re: indy karakter sorunu.

Mesaj gönderen oklawa »

Kod: Tümünü seç

  IdHTTP1.Request.ContentType := 'text/html';
  IdHTTP1.Request.AcceptEncoding:= 'iso-8859-9';
  IdHTTP1.Request.ContentEncoding := 'iso-8859-9';
  htmlstr:=Idhttp1.Get('http://www.delphiturkiye.com/forum/');
  Memo1.Text := htmlstr;

Kod: Tümünü seç

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. 
Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz
Sonuç yine aynı.
theSinan

Re: indy karakter sorunu.

Mesaj gönderen theSinan »

aynı sorun bendede devam ediyor
sorunu çözmüş biri varsa yardımlarını bekliyoruz
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: indy karakter sorunu.

Mesaj gönderen esistem »

Kod: Tümünü seç

var
  Strm: AnsiString;
begin
Strm:=IdHTTP1.Get('http://www.delphiturkiye.com/forum/');
Strm:=UTF8Decode(Strm);
memo1.Text:=Strm;
theSinan

Re: indy karakter sorunu.

Mesaj gönderen theSinan »

cevabınız için çok teşekkür ederim
ama benim sorunu m
Get metodu ile gönderdiğim parametrelerdeki türkçe karakterlerin ? işareti olarak karşıya gitmesi
yani örnek
http://www.postaguvercini.com/api_http/ ... _çalışması
bu şekilde gönderdiğim zaman
türkçe karakterler soru işareti(?)
olarak gözüküyor
charsetsin iso-8859-9 olarak gitmesi gerekiyor
aynı link internet explorer tarayıcısına yapıştırıp enterladığım zaman türkçe karakterler karşı tarafa sorunsuz bir şekilde gidiyor
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: indy karakter sorunu.

Mesaj gönderen esistem »

test yapamadığım için bişi diyemiyorum maalesef.
theSinan

Re: indy karakter sorunu.

Mesaj gönderen theSinan »

IdHTTP
TransferEncoding
ben buraya ISO-8859-9 yazdığımda
HTTP/1.1 501 Not Implemented.
Hatası veriyor
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: indy karakter sorunu.

Mesaj gönderen esistem »

delphi hangi versiyonu kullanıyorsunuz? 2007 ve üstü ise TEncoding.UTF8 şeklinde bir kod var, onu araştırmanızı öneririm.
theSinan

Re: indy karakter sorunu.

Mesaj gönderen theSinan »

XE5 c++ kullanıyorum
Indy versiyonu : 10.6.0.5040
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: indy karakter sorunu.

Mesaj gönderen esistem »

yada veriyi göndermeden önce;

Kod: Tümünü seç

var
  Strm: AnsiString;
veri:string;
begin
veri='türkçe_karakter_çözüm_çalışması';
veri:=UTF8Encode(veri);
Strm:=IdHTTP1.Get('http://www.postaguvercini.com/api_http/ ... ser=kullanıcı_adım&password=şifrem&mesaj='+veri);
Strm:=UTF8Decode(Strm);
memo1.Text:=Strm;
şeklinde deneyin bide.
theSinan

Re: indy karakter sorunu.

Mesaj gönderen theSinan »

Kod: Tümünü seç

AnsiString *Strm;
string *veri;

veri ="http://www.postaguvercini.com/api_http/sendsms.asp?user=kullanıcı_adi&password=şifre&text=türkçe_karakter_çözüm_çalışması";
veri =UTF8Encode(veri);
Strm =IdHTTP1->Get(Edit1->Text+veri);
Strm =UTF8Decode(Strm);
Memo1->Text = Strm;
hata veriyor
hata mesajı
veri değişkenine deger atadığım satıra = Cannot convert 'char const[32]' to string
utf8 ile encode etmeye çalıştığım satırda ise = could not find a match for 'UTF8Encode(string *)'
hata üretiyor
ama ben
ctrl+ backspace ile kodlari listelediğimde
UTF8Encode(const WideString) RAWByteString olarak gözüküyor
çıkmaza girdim galiba
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: indy karakter sorunu.

Mesaj gönderen esistem »

Kod: Tümünü seç

AnsiString *Strm;
AnsiString *veri;

veri ="türkçe_karakter_çözüm_çalışması";
veri =UTF8Encode(veri);
Strm =IdHTTP1->Get(Edit1->Text+"http://www.postaguvercini.com/api_http/sendsms.asp?user=kullanıcı_adi&password=şifre&text="+veri);
Strm =UTF8Decode(Strm);
Memo1->Text = Strm;
şeklinde denermisiniz. Yani sadece text kısmını encode edin ve veri değişkeninide ansistring yapın.
En son esistem tarafından 08 Nis 2014 02:29 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Cevapla