日本語が通るようになりました。
%uXXXX の UTF-16 escape の件は ActionScript 側で UTF-8 に変換してからサーバにリクエストすることで解決できました。具体的にはリクエストパラメータ data を作成するときに
data += id + "=" + Utf16escapeToUtf8escape( escape(text) ) + "&";
としています。ビルトイン関数の escape で「あ」が UTF-16 escape 文字列「%u3041」になるので、それをさらに自作の Utf16escapeToUtf8escape で UTF-8 の escape 文字列「%E3%81%82」に変換するということですね。変換ルーチンは「UCS-2とUTF-8」 の「UCSからUTF-8への変換法」と「高度な JavaScript 技集」の utf.js を参考にしました。サロゲートペアには対応していません。
解決方法だけ書いてみるとあっさりしすぎているけど、調べていく上で UCS と UTF の関係が勉強になりました。flex2 アプリとしてもこれで一応完成の形にはなりましたかね。
アプリはこちら: http://tsuyuguchi.com/masaaki/flex2/QRcode/ ソースは Flash アプリ上で右クリック→「View Source」で mxml を見ることができるので、そこから Script の source であるところの QRcode.as を辿って見ることができます。











コメントする