これはスタック オーバーフローに関する私の最初の質問です。書きたいと思ったのは初めてではありませんが、通常は検索バーを使用して解決策を見つけますが、今回は見つけませんでした。私が取り組んでいる問題は少し複雑なので、できる限り徹底的に取り組みます。
基本的に、既存の Flash の e コマースに中国の支払いを追加します。Web サイト全体が AS3 にあり、SWFObject を使用して埋め込まれ、すでに他の目的で ExternalInterface を使用しています。
この新しい中国の支払い方法は少し時代遅れであるため、支払いの処理方法が奇妙です。すべての注文の詳細を含む POST をサーバーに送信すると、HTML ページで応答します。私の問題は、Flash 内で受信したことを考慮して、このページをレンダリングすることです。
私が現在試している解決策は部分的に機能します。つまり、ページを見ることはできますが、ページにあるはずの漢字がうまく表示されません。漢字の代わりに奇妙な文字が表示されるので、HTML を Flash から Javascript に渡すときにエンコーディングの問題があるに違いないと推測しています。これが私がやっている方法です:
AS3:
//extract html page from response
var newHTML:String = e.currentTarget.data;
//trim whitespace to avoid javascript error
newHTML = newHTML.replace(/\n/g, '');
newHTML = newHTML.split("\r").join("");
if(ExternalInterface.available)
ExternalInterface.call("chinesePayment('"+newHTML+"')");
else
trace("External interface error");
Javascript:
function chinesePayment(param) {
var newWindow = window.open();
//var unescaped = unescape(param);
newWindow.document.write(param);
}
unescape、escape、URIencoding をいじってみましたが、うまくいきませんでした。
ありがとう、ドメニコ
編集:
サーバーから正しい HTML ページを受信していることをお伝えしたいと思います。ページをローカルに保存し、サーバーの応答から HTML コードを直接コピーして、ページを正しく表示しようとしました。つまり、ページを AS3 から Javascript に渡すプロセスに問題があるはずです。
EDIT2 重要:
問題はポップアップのエンコーディングにあることに気付きました。ポップアップから HTML をコピーし、エディターに貼り付けて保存すると、HTML を正しく表示できます。ポップアップは gbk エンコーディングを考慮していないようです。私は今、この問題の解決策を探しています。