PDA

View Full Version : تبدیل به urlencode



omid_delphi2
پنج شنبه 25 مرداد 1386, 19:55 عصر
با سلام به دوستان
من میخواهم در یک برنامه دلفی یک آدرس اینترنتی را نمایش دهم در این آدرس باید پارامتر ارسال شده به صورت urlencode باشد برای مثال باری ارسال پارامتر "خودرو" باید رشته
%D8%AE%D9%88%D8%AF%D8%B1%D9%88
را ارسال کنیم
نحوه تبدیل رشتهاصلی به این رشته چگونه است؟

Hamid_PaK
پنج شنبه 25 مرداد 1386, 22:09 عصر
تبدیل رشته به URL :


function RawUrlEncode(_url: String): String;
const
alnum = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789._';
var
tmp: String;
a: Integer;
begin
tmp := '';
for a := 1 to Length(_url) do begin
if Pos(_url[a], alnum) = 0 then
tmp := tmp+'%'+Int2Hex(Ord(_url[a]), 0)
else
tmp := tmp+_url[a];
end;
Result := tmp;
end;

function RawUrlDecode(_url: String): String;
var
tmp: String;
a, b: Integer;
begin
b := 0;
for a := 1 to Length(_url) do begin
if b > 0 then
Dec(b);
if _url[a] = '%' then begin
tmp := tmp + chr(Hex2Int(Copy(_url, a+1, 2)));
b := 3;
end else
if b = 0 then
tmp := tmp + _url[a];
end;
Result := tmp;
end;

omid_delphi2
شنبه 27 مرداد 1386, 07:45 صبح
با سلام حمید خان
خیلی ممنون از راهنمایی ولی این برنامه برای حروف لاتین کار میکند
برای حروف فارسی درست جواب نمیدهد
در مثالی که در بالا زدم اگر توجه کنید کلمه "خودرو" 5 حرف دارد در حالیکه رشته تولید شده 10 کد هگزا دارد
فکر کنم از روش دیگری استفاده شده است

Hamid_PaK
شنبه 27 مرداد 1386, 16:03 عصر
خوب مسلما یونیکد است که برای هر حرف 2 بایت در نظر گرفته است ، شما باید ابتدا کد اسکی یونیکد را بدست بیاورید و بعد آنرا هگزا کنید.
ولی مشکل اینجاست که معادل یونیکد "خودرو" این بایت ها :
%D8%AE%D9%88%D8%AF%D8%B1%D9%88
نیست بلکه باید این چنین باشد :
2E 06 48 06 2F 06 31 06 48 06
شما اطمینان دارید که همین مقادیر است و این مقادیر را از کجا یافته اید ؟؟؟

یا حق ...

omid_delphi2
یک شنبه 28 مرداد 1386, 11:11 صبح
بله این هم لینکش
http://www.tsetmc.com/xmlOutput.aspx
ممنون از کمک شما

omid_delphi2
دوشنبه 05 شهریور 1386, 17:29 عصر
خبری نشد؟؟؟؟!!!!

omid_delphi2
پنج شنبه 08 شهریور 1386, 11:48 صبح
بابا دمتون گرم خوب جواب میدین مشکل ادم را حل میکنید

omid_delphi2
شنبه 17 شهریور 1386, 17:45 عصر
خیلی ممنون!!!!!!!!!!!!!