这是我关于 Stack Overflow 的第一个问题。这不是我第一次想写一个,但通常我会使用搜索栏找到解决方案,这次我没有。我要解决的问题有点复杂,所以我会尽量做到彻底。
基本上,我们正在将中国支付添加到现有的 Flash 电子商务中。整个网站在 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 编码。我现在正在寻找解决这个问题的方法。