delphiでcgiプログラムを作成しています。
javascriptでescape('あいうえお')を実行すると
'%3Cb%3E%u3042%u3044%u3046%u3048%u304A%3C/b%3E'となるのですが、これをdelhpiのプログラムでこの文字列を作成するにはどうしたらいいのでしょうか?
よろしくお願いします。
お久しぶりです。
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;
monaaさんありがとうございます。
delphiって色々な関数を持っているんだと感心しています。
大変勉強になりました。
ツイート | ![]() |