我遇到了一个愚蠢的编码问题。
我的问题是我所有突出的字符都显示为奇怪的iso字符。
示例:é显示%E9
我将一个字符串发送到我的php文件:
XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));
XMLLoader.addEventListener(Event.COMPLETE,XMLLoaded);
当我追踪q时,我得到:
“INSERT INTO hello_world(消息) 值( 'EAAA');“
GOOD查询
我的php文件看起来像这样:
<?php
include("conection.php");//Conectiong to database
$Q = $_GET['Query'];
$query = $Q;
$resultID = mysql_query($query) or die("Could not execute or probably SQL statement malformed (error): ". mysql_error());
$xml_output = "<?xml version=\"1.0\"?>\n"; // XML header
$xml_output .= "<answers>\n";
$xml_output .= "<lastID id=".'"'.mysql_insert_id().'"'." />\n";
$xml_output .= "<query string=".'"'.$query.'"'." />\n";
$xml_output .= "</answers>";
echo $xml_output;//Output the XML
?>
当我将XML恢复到flash时,$ query看起来像这样:
“INSERT INTO hello_world(消息) 值( '%E9%E0a%E0');“
然后这些值会显示在我的数据库中,这很烦人。
任何帮助将不胜感激!欢呼声。
JK _
答案 0 :(得分:1)
urldecode将完成这项工作。
在旁注中,发送类似的查询是非常不良做法。发送必要的数据,过滤它然后构造查询,除非你正在构建一个phpMyAdmin的克隆。
答案 1 :(得分:0)
flash可能正在请求带有编码参数/查询字符串的网址,因此请使用urlencode在php中对其进行解码。
即
$ Q = urldecode($ _ GET ['Query']);
答案 2 :(得分:0)
我的问题现在解决了!
正如上面的 andr 所述,使用GET发送查询真是个坏主意。
当我使用以下命令从Flash发送数据时
XMLLoader.load(new URLRequest(online+"/query.php?Query=" + q));
网址已经过编码,即使使用urldecode,我的数据库中也有一个空白条目。
感谢 andr 和 raz-l ,我改变了将数据发送到php文件的方式。
在flash中我使用URLVariables,在PHP中我构建了我的查询:
variables = new URLVariables();
variables.Query = "éàûï ceci est un test...";
request.method = URLRequestMethod.POST;
request.data = variables;
XMLLoader.load(request);
我的php文件看起来像这样:
$Q = mysql_real_escape_string($_POST['Query']);
$query = "INSERT INTO hello_world (message) values ('".$Q."')";
JK _
答案 3 :(得分:0)
$ q = mysql_real_escape_string(urldecode($ _ GET ['Query']));