delphiでjavascriptのencode関数再現するには

解決


トシ  2011-06-06 10:09:54  No: 40631

delphiでcgiプログラムを作成しています。
javascriptでescape('あいうえお')を実行すると
'%3Cb%3E%u3042%u3044%u3046%u3048%u304A%3C/b%3E'となるのですが、これをdelhpiのプログラムでこの文字列を作成するにはどうしたらいいのでしょうか?
よろしくお願いします。


monaa  2011-06-06 22:30:39  No: 40632

お久しぶりです。
D2009で動作確認しました。
仕様は下のURLを参考にしてます。
http://groundwalker.com/blog/2007/02/javascript_escape_encodeuri_encodeuricomponent_.html
unescapeはやってあげませんので必要あれば自力でどぞ。

//uses HTTPApp
function CheckCode(Code:Integer):Boolean;
begin
  result :=
  ((Code >= 42) and (Code <=57)) or
  ((Code >= 64) and (Code <=90)) or
  (Code = 95) or
  ((Code >= 97) and (Code <=122));
end;

function JavaScript_esacpe(str:WideString):string;
var
  i,s:Integer;
begin
  Result := '';
  for i := 1 to Length(str) do
  begin
    s := ord(str[i]);
    if s <= $FF then
    begin
      if CheckCode(s) then
        Result := Result +  str[i] else
        Result := Result +  HttpEncode(str[i])
    end else
      Result := Result + '%u' + IntToHex(s,4);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := JavaScript_esacpe('<b>あいうえお</b>');
end;


トシ  2011-06-06 23:11:53  No: 40633

monaaさんありがとうございます。

delphiって色々な関数を持っているんだと感心しています。

大変勉強になりました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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