Delphi Can
Rest server client UTF8 Problemi - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Rest server client UTF8 Problemi (/showthread.php?tid=2708)

Sayfalar: 1 2


Rest server client UTF8 Problemi - burakb44 - 04-10-2018

Arkadaşlar merhaba, https://m.youtube.com/watch?v=_P6waeTlhVc bu linkteki rest uygulamasını çalışırken UTF-8 kodlamasından kaynaklı verileri getirmiyor. Browserdan linki çağırdığımda sorunsuz geliyor. Sebebi ben olabilir? UTF-8 için nasıl bir ayar gerekiyor.


Rest server client UTF8 Problemi - masteryoda - 05-10-2018

Örnek bir kod bloğu yada proje paylaşabilir misiniz?


Cvp: Rest server client UTF8 Problemi - burakb44 - 05-10-2018

(05-10-2018, Saat: 00:23)masteryoda Adlı Kullanıcıdan Alıntı: Örnek bir kod bloğu yada proje paylaşabilir misiniz?

Server tarafı

procedure TWebModule1.DenemeGet(Request: TWebRequest; Response: TWebResponse);
var
 a: TJSONArray;
 o: TJSONObject;
begin
qry.SQL.Text := 'select * from users;';
qry.Active := true;
 if qry.Active then begin
   if qry.RecordCount>0 then begin
     a := TJSONArray.Create;
     try
       qry.First;
       while (not qry.Eof) do begin
         o := TJSONObject.Create;
         o.AddPair('ID',TJSONNumber.Create( qry.FieldByName('ID').AsInteger ));
         o.AddPair('KULLANICIADI',qry.FieldByName('KULLANICIADI').AsString );
         o.AddPair('SIFRE',qry.FieldByName('SIFRE').AsString );
         o.AddPair('KULLANICITIPI',qry.FieldByName('KULLANICITIPI').AsString );
         a.AddElement(o);
         qry.Next;
       end;
     finally
       Response.ContentType := 'application/json';
       //Response.ContentType := 'application / x-www-form-urlencoded';
       Response.Content := a.ToString;
       a.DisposeOf;
     end;
   end;
 end;
end;

procedure TWebModule1.WebModule1accdenemeAction(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
 Handled := True;
 case Request.MethodType of
   mtGet: DenemeGet( Request, Response );
//    mtPut: EmployeePut( Request, Response );
//    mtPost: EmployeePost( Request, Response );
//    mtDelete:  EmployeeDelete( Request, Response );
   else begin
     Response.StatusCode := 400; // bad request error code.
     Response.SendResponse;
   end;
 end;
end;


rest client
nlZR45.png

request

vPrbqm.png


response
0z913R.png






türkçe karakter olmayan data istediğimde server tarafından bilgi sorunsuz geliyor, ancak türkçe karakterli bir data istediğimde aşağıdaki hatayı veriyor
nlZRZR.png


Cvp: Rest server client UTF8 Problemi - Fesih ARSLAN - 05-10-2018

Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?


Cvp: Rest server client UTF8 Problemi - burakb44 - 05-10-2018

(05-10-2018, Saat: 11:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?

test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor


Cvp: Rest server client UTF8 Problemi - Fesih ARSLAN - 05-10-2018

(05-10-2018, Saat: 11:31)burakb44 Adlı Kullanıcıdan Alıntı:
(05-10-2018, Saat: 11:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Tools menüsü altındaki REST Debugger aracı ile test edebilir misiniz?

test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor

Merhaba,
Response kısmını aşağıdaki gibi tanımlayarak deneyebilir misiniz?
Response.ContentType := 'application/json; charset=UTF-8';
JSON metodlarında desteklenmeyen bir UTF metodunun olmasına karşın, yukarıdaki yöntemle olmaz ise, içeriği metinsel format olarak bildirerek test edin.
Response.ContentType := 'text/html; charset=UTF-8';



Cvp: Rest server client UTF8 Problemi - burakb44 - 05-10-2018

(05-10-2018, Saat: 11:39)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(05-10-2018, Saat: 11:31)burakb44 Adlı Kullanıcıdan Alıntı: test ettim Fesih hocam gelen data içeriğinde türkçe karakter olursa hata veriyor, olmazsa sorunsuz çalışıyor

Merhaba,
Response kısmını aşağıdaki gibi tanımlayarak deneyebilir misiniz?
Response.ContentType := 'application/json; charset=UTF-8';
JSON metodlarında desteklenmeyen bir UTF metodunun olmasına karşın, yukarıdaki yöntemle olmaz ise, içeriği metinsel format olarak bildirerek test edin.
Response.ContentType := 'text/html; charset=UTF-8';

Fesih hocam json formatında belirttiğiniz gibi denedim yine aynı hataya düştü, sadece text/html olarak metin gönderdiğimde problemsiz gedi. sorun json gönderip alma ile ilgili


Rest server client UTF8 Problemi - osiso - 15-11-2018

RESTRequest1.Params[1].Value:=UTF8ToString(gönderilen metin)
veya
RESTRequest1.Params[1].Value:=UTF8EncodeToShortString(gönderilen metin)
şeklinde denerseniz sorun çözülüyor bende bu şekilde sorun düzeldi.


Cvp: Rest server client UTF8 Problemi - klavye - 15-11-2018

(15-11-2018, Saat: 17:10)osiso Adlı Kullanıcıdan Alıntı:
RESTRequest1.Params[1].Value:=UTF8ToString(gönderilen metin)
veya
RESTRequest1.Params[1].Value:=UTF8EncodeToShortString(gönderilen metin)
şeklinde denerseniz sorun çözülüyor bende bu şekilde sorun düzeldi.

Elinize sağlık benzeri bir sorunu bende yasiyordum. Hata iletisi başkaydı ama bu kodu yazinca duzeldi.


Rest server client UTF8 Problemi - burakb44 - 20-11-2018

REST'ten vazgeçip datasnap ile çözdüm olayı şimdilik, projenin ilerleyişine göre REST'e dönebilirim belki.
İlginiz ve cevaplar için teşekkür ederim.