Delphi6で作成したCGIをUnicode文字に対応させるために
Delphi2010で作り直そうとしています。
問題点としてPostパラメータを受け取る際に文字化けしてしまいます。
Getパラメータはうまく受け取れたのですが・・・
Postパラメータを文字化けしないで受け取る方法のご教授をお願いします。
procedure GetParam(var ParamList: TStringList);
var
Param: string;
EPos: Integer;
ContentLength: Integer;
readn: DWORD;
TmpParam: string;
CumulativeRead: DWORD;
Loop: Integer;
begin
try
GetEnvironmentVariable(PChar('REQUEST_METHOD'), FENV, Sizeof(FENV));
Param := '';
if FENV = 'GET' then begin
FENV := '';
GetEnvironmentVariable(PChar('QUERY_STRING'), FENV, Sizeof(FENV));
Param := FENV;
FENV := '';
end
else if FENV = 'POST' then begin
FENV := '';
GetEnvironmentVariable(PChar('CONTENT_LENGTH'), FENV, Sizeof(FENV));
ContentLength := StrToInt(FENV);
FENV := '';
SetLength(Param, ContentLength);
if ContentLength > 0 then begin
ReadFile(STD_INPUT_HANDLE, Param[1], ContentLength, readn, nil);
end;
CumulativeRead := readn;
Loop := 0;
while CumulativeRead < ContentLength do begin
ReadFile(STD_INPUT_HANDLE,
Param[CumulativeRead + 1],
ContentLength - CumulativeRead,
readn,
nil);
CumulativeRead := CumulativeRead + readn;
Inc(Loop);
if Loop >= 1000 then begin
Break;
end;
end;
end;
if Param <> '' then begin
while Pos('&', Param) > 0 do begin
EPos := Pos('&', Param);
TmpParam := Copy(Param, 1, EPos - 1);
Utf8Decode(HttpDecode(TmpParam));
ParamList.Add(TmpParam);
Param := Copy(Param, EPos + 1 , Length(Param) - EPos);
end;
ツイート | ![]() |