Q&A

  • [질문]php 에서의 urlencode 를 델파이에서 URLDecode 하려면..
php 에서 urlencode 된 아래의 문자를 델파이에서 하려니 안되는군요.


111%C7%D1%B1%DB%C0%CC%B4%D9.%B3%BB%B8%B6%C0%BD%BF%A1+1

아래의 함수를 비롯해서 여러곳의 것을 했는데 안되는데 어떻게 해야 하는지 경험있는 분의 조언을 구합니다.
글자는 아래의 글자였습니다.

111한글이다.내마음에 1

<!--CodeS-->
function URLDecode(AStr:String):String;
function IsInteger(PStr:PString; StartPos, StrLength:Integer):Boolean;
const
HexInt = ['A'..'Z', 'a'..'z', '0'..'9'];
var
i : Integer;
begin
Result := True;
if StartPos + StrLength - 1 > Length(PStr^) then Exit;
for i:= StartPos to StartPos + StrLength - 1 do
begin
if not (PStr^[i] in HexInt) then
begin
Result := False;
Break;
end;
end;
end;
var
i : Integer;
j : Byte;
begin
i := 1;
Result := '';
repeat
j := 1;
if AStr[i] = '%' then
begin
if i + 1 <= Length(AStr) then
begin
if AStr[i+1] = 'u' then
begin
if i + 5 <= Length(AStr) then
begin
if IsInteger(@AStr, i+2, 4) then
begin
Result := Result + WideChar(StrToInt('$' + Copy(AStr, i + 2, 4)));
j := 6;
end else Result := Result + AStr[i];
end else Result := Result + AStr[i];
end else if i+2 <= Length(AStr) then
begin
if IsInteger(@AStr, i+1, 2) then
begin
Result := Result + Char(StrToInt('$' + Copy(AStr, i + 1, 2)));
j := 3;
end else Result := Result + AStr[i];
end else Result := Result + AStr[i];
end;
end else if AStr[i] = '+' then Result := Result + ' '
else Result := Result + AStr[i];
Inc(i, j);
until i > Length(AStr);
end;
<!--CodeE-->
0  COMMENTS