Flashで生成した日本語文字列を、
ページ遷移後の別のFlashに受け渡したいという場面がありました。
なるべく簡易な方法ということで、
遷移するページURLにクエリとして日本語文字列をくっつけることに。
そのままブラウザでページ遷移すると文字列がURLエンコードされるので、
JavaScriptのdecodeURI()でデコードしてFlashに渡すということをしたのですが、
ブラウザによって動いたり動かなかったり。
動かないブラウザは2重にエスケープされているっぽい?
きっと何か方法があると思いつつ、Flash側で回避。
JSはクエリ部分を取得してFlashに渡すのみで、余計なことはしない。
送信Flashで送りたい日本語文字列をUTF-8エンコードescape()にかける。
クエリで受け取った文字列をFlash内部でunescape()すると元の日本語に戻ります。
//■送信Flashでエンコード var str_ori:String = "トライナイン"; var str_esc:String = escape(str_ori); trace(str_esc); //出力:%E3%83%88%E3%83%A9%E3%82%A4%E3%83%8A%E3%82%A4%E3%83%B3 //■受信Flashでデコード trace(unescape(str_esc)); //出力:トライナイン
【6月28日追記】
外部から読み込んだXML等のテキストをエンコードするとうまくいかない場合が。
System.useCodepage = false;
を明示的に前に書いてやると直るかもしれません。