Форум: "Начинающим";
Текущий архив: 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.01 c