我正在使用嵌入到html中的FLASH表单,它使用utf8字符集将变量和图像发送到php脚本,从而将它们保存为mysql。
在flash中,我使用fileupload方法,
var loc:*=new flash.net.URLRequest("http://url.com/code.php?s=1&name=" + vardas.text + "&email=" + email.text);
fileHandler.upload(loc);
问题是当我在INTERNET EXPLORER中打开并填写表单时,我在php中没有收到UTF-8变量,但是如果我使用CHROME或FIREFOX,我会把它们搞定。
IE和其他浏览器如何发送数据有什么不同?或者我是否必须以某种方式在动作脚本中编码变量?
期待创意,感谢阅读。
编辑: 可能的问题 - IE中的网址不支持像č这样的字符,而CHROME和FF却可以吗?
答案 0 :(得分:1)
// fileHandler.upload(loc); // will not encode the data to utf-8
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
// add your event listeners
urlLoader.addEventListener(Event.COMPLETE, completeHandler );
urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secErrorHandler );
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler );
var request:URLRequest = new URLRequest( "http://url.com/code.php" );
requestVars.name = vardas.text;
requestVars.email = email.text;
request.data = requestVars
//request.method = URLRequestMethod.GET;
request.method = URLRequestMethod.POST;
try {
urlLoader.load( request );
} catch (e:Error) {
trace(e);
}
[编辑]
这是另一个应该基于您的代码工作的示例,但首选示例将是首选示例。
//You should always validate any input from the user that they can manually
// enter on both client and server side. This will help prevent a plethora
// of things including data injection and many other hacking techniques.
var url:String = 'http://url.com/code.php?s=1'
url += '&name=' + escape( vardas.text );
url += '&email=' + escape( email.text );
var loc:*=new flash.net.URLRequest(url);
fileHandler.upload(loc);
答案 1 :(得分:0)
您的HTML页面中是否有此标题?
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">