Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
Интересующийся   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
3-1137070389
UnDISCOvery
2006-01-12 15:53
2006.03.05
Запрос SQL к Access - как ускорить работу?


3-1136799988
alexsis
2006-01-09 12:46
2006.03.05
Что такое BLOB ?


15-1139377858
БарЛог
2006-02-08 08:50
2006.03.05
Вот все хотят, чтоб "наши дети жили лучше чем мы"


15-1139600197
Anton Shestakov
2006-02-10 22:36
2006.03.05
Работа с help-ами


1-1138789238
Sapersky
2006-02-01 13:20
2006.03.05
Конвертер заголовков DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский