Delphi Can
html de kullanınal özel karakterler - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Delphi ile Web Teknolojileri (https://www.delphican.com/forumdisplay.php?fid=118)
+--- Konu Başlığı: html de kullanınal özel karakterler (/showthread.php?tid=5949)



html de kullanınal özel karakterler - powerghost - 24-04-2021

Merhaba Arkadaşlar,

Delphi'de yazılımış web tabanlı bir program üzerinden windows file server klasör listesini alıyoruz. fakat klasörlerde kullanılan özel karekterleri okumada zorlanıyoruz.

?&=:

insert into file_type_shared_folders (server_id,parent_id,folder_name,full_path, parents_list) values("1", "1", "GGG_&&&& ^^&&&@@@@[)]4", "\\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&&@@@@[)]4",".0..1.")

böyle bir insert var. normalde heidisql de yapsam GGG_&&&& ^^&&&@@@@[)]4    klasör bu şekilde ekleniyor

ama normal delphide Query ile eklendiğinde GGG_&&&& ^^&&@@@@[)]4 böyle ekleniyor


yani & in bir tanesi kayboluyor


html de kullanınal özel karakterler - mrmarman - 24-04-2021

Web tabanlı içerik Delphi yakasında mı yoksa Web üzerinde PHP vb. bir yapıda mı kaydediliyor ?

Eğer PHP yakasında ise bu linki kontrol etmek isteyebilirsiniz. ( mysql_real_escape_string )

Kod:
<?php
   include("connect.php");
   $bodyData = "Bolliger&Mabillard%is a rollercoaster manufacturer";
   $bodyData = mysql_real_escape_string($bodyData);
   $query="insert into news (title, body) values('About', '".$bodyData."')";
   $run = mysql_query($query) or die ($query);
   mysql_close();
?>



html de kullanınal özel karakterler - powerghost - 24-04-2021

Hocam,

post edilen datalar vasıtası ile TFDQuery; ile kaydediliyor


html de kullanınal özel karakterler - mrmarman - 24-04-2021

Bahsi geçen string path verisi Delphi yakasına POST edildiğini anlıyorum.
Meraktan soruyorum, Delphi yakasına gönderen ( path okuyan ) yapı nedir ? Orada örnek olarak 10 tane '&' karakteri yan yana POST edildiğinde Delphi yakası bunu alırken nasıl alıyor kontrol edebiliyor musunuz ?


html de kullanınal özel karakterler - uparlayan - 24-04-2021

Gönderirken base64 ile encode edip, alırken de base64 ile decode etseniz sorun olmaz gibi sanki...


Cvp: html de kullanınal özel karakterler - powerghost - 24-04-2021

(24-04-2021, Saat: 19:02)mrmarman Adlı Kullanıcıdan Alıntı: Bahsi geçen string path verisi Delphi yakasına POST edildiğini anlıyorum.
Meraktan soruyorum, Delphi yakasına gönderen ( path okuyan ) yapı nedir ? Orada örnek olarak 10 tane '&' karakteri yan yana POST edildiğinde Delphi yakası bunu alırken nasıl alıyor kontrol edebiliyor musunuz ?

hocam yapı şöyle,
TDirectory.GetDirectories(path) ile dizinleri alıyoruz. dizin adlarında html de kullanılan özel karakterler olunca ve buradan gelen path ajax ile post verisi olduğundan delphi tarafına gidince (delphi tarafındaki bir http server) bu karakterlerden dolayı parçalanıyor. özel karakter ile replace ettik mesela & işareti için %26 gibi karakterlerle replace ettiğimizde veri gidiyor ama bukezde sql i aşağıdaki gibi bir insert işlemi yaptığımda ^^&&& olan kısım ne hikmetse ^^&& şeklinde ekleniyor dolayısıyla doğru kayıt girilmiyor. aynı insert heidisql ile query penceresinden çalıştırıca normal bir şekilde kaydediyor. base64 ile kodlasam bile sonuçta delphi ayağına gelince orjinalini almam lazım ki o da aşağıdaki gibi bir data oluyor yani \\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&&@@@@[)]4 bir path gireceğim ama db ye insert edilen \\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&@@@@[)]4 bu şekilde oluyor. ilginç olan burası. bunu TFDQuery nesnesi mi yapiyor onuda tam olarak bilmiyorum.
PHP Kod:
insert into file_type_shared_folders (server_id,parent_id,folder_name,full_pathparents_listvalues("1""1""GGG_&&&& ^^&&&@@@@[)]4""\\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&&@@@@[)]4",".0..1."



html de kullanınal özel karakterler - mrmarman - 24-04-2021

Sorun karakter unicode vb. kodlaması sorunu desem sadece tek karakter eksiltmesi olmazdı. Çünkü bütüne etkisi olurdu.

FDQuery'ye parametre ile bunu girmek ama girerken AsString değilde AsWideString olarak denemek isteyebilirsiniz.

 FDQuery1.SQL.Text:= 'insert into file_type_shared_folders (server_id,parent_id,folder_name,full_path, parents_list) values("1", "1", :param00, :param01,".0..1.") '
 FDQuery1.Params[0].AsWideString := 'GGG_&&&& ^^&&&@@@@[)]4';
 FDQuery1.Params[1].AsWideString := '\\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&&@@@@[)]4';
 FDQuery1.ExecSQL;



Cvp: html de kullanınal özel karakterler - powerghost - 25-04-2021

(24-04-2021, Saat: 23:46)mrmarman Adlı Kullanıcıdan Alıntı: Sorun karakter unicode vb. kodlaması sorunu desem sadece tek karakter eksiltmesi olmazdı. Çünkü bütüne etkisi olurdu.

FDQuery'ye parametre ile bunu girmek ama girerken AsString değilde AsWideString olarak denemek isteyebilirsiniz.

 FDQuery1.SQL.Text:= 'insert into file_type_shared_folders (server_id,parent_id,folder_name,full_path, parents_list) values("1", "1", :param00, :param01,".0..1.") '
 FDQuery1.Params[0].AsWideString := 'GGG_&&&& ^^&&&@@@@[)]4';
 FDQuery1.Params[1].AsWideString := '\\\\filesrver.HISAR.LOCAL\\FileShareEMin\\GGG_&&&& ^^&&&@@@@[)]4';
 FDQuery1.ExecSQL;

hocam param ile insert işlemi halloldu teşekkürler. şimdi de şöyle bir durum söz konusun
TDirectory.GetDirectories(path) ile dizinleri okurken türkçe karakterleri okumuyor karakterleri ingilizceye çeviriyor. meslea şğüıç şeklide bir dizini sguic şeklinde okuyor. TDirectory.GetDirectories nin encode özelliği yok sanırım. bunu nasıl çözebilirim. dizinlerin ismini türkçe karakter olarak okumak gereiyor. reelde bu dizin var aslında ama dizin ismi doğru gelmediğinden dizini sonraki işlemlerde bulamadığından işlem yapamıyoruz. bu konuda bir öneriniz var mıdır?


html de kullanınal özel karakterler - mrmarman - 26-04-2021

Aşağıdaki şekilde denedim Türkçe klasör isimleri doğru geldi...

Uses System.IOUtils, System.Types;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  LDirs : TStringDynArray;
  i     : Integer;
begin
  LDirs := System.IOUtils.TDirectory.GetDirectories( 'c:\ARMAN.Study\Video(s)\' );
  for i := 0  to High(LDirs) do
    Memo1.Lines.Add(LDirs[i]);
end;


m2oyg4779qvoemo7gfxy.gif



html de kullanınal özel karakterler - powerghost - 27-04-2021

Hocam,
Yapı aynı fakat bizimki web servis olduğundan respons tarafı utf8 set ettik TR karekter sorunu çözüldü. .