Flash / App Engine请求数据编码问题(GET正常,POST失败)

时间:2010-11-12 18:18:44

标签: actionscript-3 google-app-engine encoding request

我是Flash新手并试图与应用引擎服务器通信,但我遇到了一些编码问题。

var playerLoader:URLLoader = new URLLoader();
playerLoader.addEventListener( Event.COMPLETE, function(e:Event) { doStuff(); } );
var requestVars:URLVariables = new URLVariables();
requestVars.q = "åäö";
var urlRequest:URLRequest = new URLRequest( serverUrl );
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = requestVars;
playerLoader.load( urlRequest );

这不起作用,在服务器端给我一些编码错误。但是,如果我将POST切换到GET,它会自动运行。

有什么线索以及我如何使用POST?

谢谢!

1 个答案:

答案 0 :(得分:2)

据我所知,Actionscript的HTTP请求本身将以UTF-8编码。

我用这种方式为西班牙语字符工作:

var url:String = "historia.php";
var request:URLRequest = new URLRequest(url);
var requestVars:URLVariables = new URLVariables();
var now:Date = new Date();
requestVars.historia = "áóíúéñÁÓÍÚÉÑ";   
request.data = requestVars;
request.method = URLRequestMethod.POST;
var urlLoader:URLLoader = new URLLoader();
urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.load(request);

在PHP方面(为清晰起见而恢复):

header ('Content-type: text/html; charset=utf-8');
if(isset($_POST['historia']) {
    $historia = mysql_real_escape_string(utf8_decode($_POST['historia']));
    $historia = filter_var($historia, FILTER_SANITIZE_STRING);
        // insert into DB...
}

我使用utf8_decode(),因为数据库未配置编码UTF-8

您如何在服务器端处理请求?也许问题出在服务器端。