[AS3] URLエンコード [Edit]

ActionScript 3.0では、escape()関数の動作が2.0/1.0とは一部変わりました。たとえば、"F-siteセミナー"という文字列をescape()関数でURLエンコードすると、ActionScript 3.0と2.0/1.0の結果はそれぞれつぎのような文字列になります。

【ActionScript 3.0】
F-site%u30BB%u30DF%u30CA%u30FC

【ActionScript 2.0/1.0】
F%2Dsite%E3%82%BB%E3%83%9F%E3%83%8A%E3%83%BC

実は、JavaScriptのescape()関数も、Unicodeをサポートするブラウザ上では、ActionScript 3.0と同じ結果を返します。変換対象はASCII文字以外なので、ハイフン("-")はそのまま返します。また、Unicodeをサポートするブラウザでは、2バイト文字を「%uxxxxという形式で2バイト文字にエンコードします」。この仕様は、ECMA-262にもとづくようです。

ActionScript 2.0/1.0のescape()関数は、2バイト文字をUTF-8でエンコードしていました。ActionScript 3.0で文字列をUTF-8でエンコードするには、flash.utils.escapeMultiByte()関数を用います[*1]

import flash.utils.escapeMultiByte;
var _str:String = escapeMultiByte("F-siteセミナー");
trace(_str);   // 出力: F%2Dsite%E3%82%BB%E3%83%9F%E3%83%8A%E3%83%BC

[*1] デコードするには、flash.utils.unescapeMultiByte()関数を使います。なお、これらの関数については、akihiro kamijo「文字列のエスケープ」をご参照ください。

コメント

この記事へのコメント

  1. 1.akipponn(2007年10月04日 16:23)

    ありがとうございます。救われました~!

  2. 2.shinro(2007年11月14日 16:32)

    同じく救われました。ありがとうございました~!

その他の記事