コンソール形式CGIの文字化けを解消するには?

解決


imu  2018-08-28 23:52:16  No: 49466

コンソール形式CGIの文字化けを解消するには?

はじめまして、お世話になります。
以前、Delphi6で作成したコンソールアプリ形式のCGIプログラムを
Delphi10.2へ移植したところ、HTMLフォームからPOSTした全角文字が
文字化けしてしまい困っています。
解決する方法を教えていただけないでしょうか。

■開発環境
Delphi10.2
WindowsServer2016
Apache2.4

■テストソース(testcgi.dpr)
program testcgi;

{$APPTYPE CONSOLE}

uses
  SysUtils;

{$E cgi}

var
  C : AnsiChar;
  i : integer;
  data : AnsiString;
begin
  //HTMLフォームから送信されたデータの取得
  for i := 1 to StrToIntDef(GetEnvironmentVariable('CONTENT_LENGTH'), 0) do
  begin
    Read(C);
    data := data + C;
  end;

  Writeln('Content-type: text/html');
  Writeln('');
  Writeln('<!DOCTYPE html>');
  Writeln('<html>');
  Writeln('<head>');
  Writeln('<meta charset="Shift_JIS">');
  Writeln('</head>');
  Writeln('<body>');
  Writeln('POST DATA : ' + data); //取得したフォームデータをそのまま表示
  Writeln('</body>');
  Writeln('</html>');
end.

■HTMLフォーム
<!DOCTYPE html>
<html>
<head>
<meta charset="Shift_JIS">
</head>
<body>
<form action="/cgi-bin/testcgi.cgi" method="post">
<input type="text" name="data" value="データ"><br />
<input name="submit" type="submit" value="submit">
</form>
</body>
</html>

■実行結果
入力文字:データ
→%83f%81%5B%83%5E(URLデコード→%83fータ)

入力文字:フォーム
→%83t%83H%81%5B%83%80(URLデコード→%83t%83Hーム)


imu  2018-08-29 01:44:04  No: 49467

すいません。自己解決いたしました。
URLデコードが正しく動作していませんでした。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加