Главная страница
    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.014 c
1-1138973753
DUDAS
2006-02-03 16:35
2006.03.05
выравнивание по вертикали в DBGrid


15-1139408761
[lamer]Barmaglot
2006-02-08 17:26
2006.03.05
1С-Управление распределенными информационными базами


2-1139857519
Rom
2006-02-13 22:05
2006.03.05
Проблемы с Locate


2-1140078083
Creative
2006-02-16 11:21
2006.03.05
проблема с уничтожением поля объекта


2-1140243055
VitalikS
2006-02-18 09:10
2006.03.05
POP3





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский