[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)

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

  3. 3.hayato_hoshikawa(2009年05月06日 16:11)

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

  4. 4.匿名(2009年08月05日 16:44)

    ぼくもすくわれました!ありがとうございます!

  5. 5.ggs(2010年03月01日 14:08)

    はぅあ!救われました〜!

  6. 6.dig(2010年03月11日 12:12)

    You rescued ours from danger.

  7. 7.co(2010年04月12日 20:30)

    情報ありがとうございましたー!
    救われましたー!

  8. 8.匿名(2013年04月27日 12:55)

    助かりました!ありがとうございます!

  9. 9.しゅん(2013年04月27日 12:55)

    助かりました!ありがとうございます!

この記事にコメントを書く

記事に対するテクニカルな質問はご遠慮ください(利用規約)。

その他の記事