Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Обработка сервером формы пришедшей от клиента   Найти похожие ветки 

 
Интересующийся   (2006-02-11 09:41) [0]

Сервер получает от клиента инфо с формы в кодированном виде.

Подскажите плиз!

Как привести эту инфу в нормальный текст.


 
Slym ©   (2006-02-13 09:45) [1]

Раскодировать (URLEncode)


 
evvcom ©   (2006-02-13 10:11) [2]

Какой сервер? От какого клиента? Какая форма? Что за инфо? Ты вообще о чем? И где?

> Slym ©   (13.02.06 09:45) [1]

Телепат? Encode - кодировать, раскодировать - decode.


 
Интересующийся   (2006-02-14 06:52) [3]

Web-сервер (HTTP) получает от клиента (IE, Opera) результут заполнения формы в виде текста.

Если текст на Eng и без " " то все нормально, в противном случае получаем вот такую вещь


"%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C"


Это так выглядит "Интересующийся"

P.S.
Взято из куков сайта, да простят меня мастера.)

1. Руский "Интересующийся""
Cookie: hotlog=1; delphi_name=%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u 044C; delphi_email=User@Mail.ru

2. Англ "User"
Cookie: delphi_name=User; delphi_email=User@Mail.ri


 
Интересующийся   (2006-02-14 06:55) [4]

Так вот мне нужно получит из


"%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u 044C"


Первоначальное


"Интересующийся"


P.S.
Желательно без доп. компонент, а просто в виде вункции с текстовым пареметром и результом.


 
Digitman ©   (2006-02-14 08:58) [5]


> "%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C"
>
>
> Это так выглядит "Интересующийся"


Ой врешь)

Так выглядит слово "Пользователь".

Убедись сам:

procedure TForm1.Button1Click(Sender: TObject);
const
 Src = "%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C";
var
 SL: TStrings;
 Dst: String;
 i: Integer;
begin
 SL := TStringList.Create;
 try
   SL.Text := StringReplace(Src, "%u", #13"$", [rfReplaceAll]);
   for i:=1 to SL.Count - 1 do
     Dst := Dst + WideChar(StrToInt(SL[i]));
   ShowMessage(Dst);
 finally
   SL.Free;
 end;
end;


 
Интересующийся   (2006-02-14 09:52) [6]

Проверил врерно "Пользователь".

Хотя странно, ведь в поле на на инглиге User ставит.

Хотя тесть предпололожение, что я рускую строку из лога не к тому нику указал.

Но дело не в этом, код работает.

А обратная часть есть?
В виде функция я их сам организую :)

P.S.
Digitman вам спасибо за код.


 
Digitman ©   (2006-02-14 10:31) [7]

procedure TForm1.Button1Click(Sender: TObject);
const
 Src = "%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C";
var
 SL: TStrings;
 Dst: String;
 DstW: WideString;
 i: Integer;
begin
 SL := TStringList.Create;
 try
   SL.Text := StringReplace(Src, "%u", #13"$", [rfReplaceAll]);
   for i:=1 to SL.Count - 1 do
     Dst := Dst + WideChar(StrToInt(SL[i]));
   ShowMessage(Dst);
 finally
   SL.Free;
 end;
 DstW := Dst;
 Dst := "";
 for i:=1 to Length(DstW) do
     Dst := Dst + "%u"+ IntToHex(Integer(DstW[i]), 4);
 ShowMessage(Dst);
end;


 
Интересующийся   (2006-02-14 10:58) [8]

Кодируемый текст

Пользователь

Основная строка
%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C

Результат
%u00CF%u00EE%u00EB%u00FC%u00E7%u00EE%u00E2%u00E0%u00E0%u00F2%u00E5%u00EB%u00FC

Вопрос а гдже соответствие?


 
Интересующийся   (2006-02-14 11:01) [9]

Код текстовой программы

1. Из текста в "Пользователя" (Работает)


procedure TForm1.Button1Click(Sender: TObject);
var
Src:String;
SL:TStrings;
Dst: String;
i: Integer;
begin
SL:=TStringList.Create;

try
Src:=Edit1.Text;
SL.Text:=StringReplace(Src,"%u",#13"$",[rfReplaceAll]);

  for i:=1 to SL.Count-1 do Dst:=Dst+WideChar(StrToInt(SL[i]));

finally
SL.Free;
end;

Memo1.Lines.Add(Dst);
end;


2. Из пользователя в текст (Вопрос)

procedure TForm1.Button2Click(Sender: TObject);
var
Src:String;
SL:TStrings;
Dst:String;
DstW:WideString;
i:Integer;
begin

SL:=TStringList.Create;

try
Src:=Edit1.Text;
Dst:="";

for i:=1 to Length(Src) do Dst:=Dst+"%u"+IntToHex(Integer(Src[i]),4);

Memo1.Lines.Add(Dst);
finally
SL.Free;
end;

end;



 
Digitman ©   (2006-02-14 11:18) [10]


> Интересующийся   (14.02.06 11:01) [9]


С LOCALE разберись.
У меня все в порядке.


 
Интересующийся   (2006-02-14 11:29) [11]

Если так


var
SL:TStrings;
Dst:String;
Src,DstW:WideString;
i:Integer;


все работает

Конечный результут


procedure TForm1.Button2Click(Sender: TObject);
var
SL:TStrings;
Dst:String;
Src,DstW:WideString;
i:Integer;
begin

SL:=TStringList.Create;

try
Src:=Edit1.Text;
Dst:="";

for i:=1 to Length(Src) do Dst:=Dst+"%u"+IntToHex(Integer(Src[i]),4);

Memo1.Lines.Add(Dst);
finally
SL.Free;
end;

end;


P.S.
String и WideString как видно - это большая разница.


 
Digitman ©   (2006-02-14 11:45) [12]


> String и WideString как видно - это большая разница.


Неужели ?)

То-то я смотрю - ты слишком фривольно распорядился в [9] типами переменных. У меня-то как раз WideString использован !

Ну и еще непонятно, зачем тебе TStringList в [11] понадобился, если он нигде там не используется


 
Интересующийся   (2006-02-14 12:36) [13]

>То-то я смотрю - ты слишком фривольно распорядился в [9] типами переменных. У меня-то как раз WideString использован!

В первом варианте заменил конст на стринг (работало нормально), а во второй перенес непосмотрев рещив, а зря. :((

>Ну и еще непонятно, зачем тебе TStringList в [11] понадобился, если он нигде там не используется/

Вы праввы.
Мусор чистить навдо.

P.S.
А можно из первого убоать?


procedure TForm1.Button1Click(Sender: TObject);
const
Src = "%u041F%u043E%u043B%u044C%u0437%u043E%u0432%u0430%u0442%u0435%u043B%u044C";
var
SL: TStrings;
Dst: String;
i: Integer;
begin
SL := TStringList.Create;
try
  SL.Text := StringReplace(Src, "%u", #13"$", [rfReplaceAll]);
  for i:=1 to SL.Count - 1 do
    Dst := Dst + WideChar(StrToInt(SL[i]));
  ShowMessage(Dst);
finally
  SL.Free;
end;
end;


 
Интересующийся   (2006-02-14 12:55) [14]

Сам вижу, нет.


 
Digitman ©   (2006-02-14 12:55) [15]


> А можно из первого убоать?


А зачем ?
Он там как раз к месту ..


 
Интересующийся   (2006-02-14 12:56) [16]

Digitman ©   (14.02.06 12:55) [15]

>А зачем ?

Интересующийся   (14.02.06 12:55) [14]



Страницы: 1 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.039 c
2-1140078068
VanDet
2006-02-16 11:21
2006.03.05
Здраствуйте помогите мне написать программу


2-1139956136
YuRock
2006-02-15 01:28
2006.03.05
Проблема с GetMem


8-1127217771
tomek
2005-09-20 16:02
2006.03.05
Странная ошибка при работе с контекстом и таймером


2-1140088176
PoetOfDelphi
2006-02-16 14:09
2006.03.05
Событие OnDblClick для LookUpComboBox


15-1138131982
Petr V. Abramov
2006-01-24 22:46
2006.03.05
Прощай, duailup дубль N :)