0

私は PHP の専門家ではなく、ここで発生している問題を解決するのに苦労しています。

私がやっていることは、この URL からコア情報を引き出すことです: http://us.battle.net/wow/en/arena/kelthuzad/3v3/W%C3%BCstenfuchs%20zu%20gro%C3%9F/

AS3 では、チーム名から次の情報が得られます。

http://us.battle.net/wow/en/arena/kelthuzad/3v3/W%C3%BCstenfuchs%20zu%20gro%C3%9F/

では、これでいいです。URI をデコードすると、次のようになります。

http://us.battle.net/wow/en/arena/kelthuzad/3v3 /Wüstenfuchs zu groß/

私の問題は、AS3 から PHP に情報を送信するときに発生します。エンコーディングをそのまま使用していますが、何を試してもPHPはコードを正しく読み取っていません。これは出力です:

var9=http://us.battle.net/wow/en/arena/kelthuzad/3v3/Wüstenfuchs zu groÃ/

これをデコードしようとしても、まったく同じ出力が得られます。AS3 から既にデコードされた PHP に送信すると、上記と同じ結果が得られます。

AS3 の私のコードは次のとおりです。

var phpVars:URLVariables = new URLVariables();            

phpVars.team = _team;

urlRequest.method = URLRequestMethod.POST;
urlRequest.data = phpVars;

urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, returnResult);
urlLoader.load(urlRequest);

PHPの私のコードは次のとおりです。

header("Content-type: text/html; charset=utf-8");
    function updateData(){    
         $team2 = mysql_real_escape_string($_POST['team']);
         echo("var9=".$team2);
         $sql = "INSERT INTO title_test SET field1='$team2'";
         mysql_query($sql);
     }

これはデータベースに入れます:

http://us.battle.net/wow/en/arena/kelthuzad/3v3/Wüstenfuchs zu groß/

また、正しくエンコードされていないため、PHP 内で $team2 データを使用してクエリを実行しようとしても失敗していることにも注意してください。

ここで欠けているステップは何ですか?

編集:DBでutf-8が有効になっています。

4

2 に答える 2

0

さて、多くの心痛と多くの頭痛の後、私は今これを機能させました...しかし、それを機能させる方法は非常に奇妙で、ベストプラクティスではないようです.

AS3 は次のようになりました。

var phpVars:URLVariables = new URLVariables();            

phpVars.team = decodeURI(_team);

urlRequest.method = URLRequestMethod.POST;
urlRequest.data = phpVars;

urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, returnResult);
urlLoader.load(urlRequest);

PHP は次のようになりました。

$team2 = ($_POST['team']);
echo("var9=".$team2);
$sql = "INSERT INTO title_test SET field1='$team2'";
mysql_query($sql);

Connect.php は現在

mysql_connect($db_host, $db_username, $db_password, $db_name);

mysql_query('SET NAMES utf8'); 

mysql_select_db($db_name) or die (mysql_error());

これにより、データベースに情報が正しく返され、URL クエリが機能するようになりました。ただし、Flash にエコーされた情報は依然として正しく表示されません。

この方法は間違っていると確信しているので、これを開いたままにします。AS3 からはエンコードされたままにし、PHP ではエンコードを解除する必要があることはほぼ確実です。

于 2012-08-19T19:04:34.277 に答える
0

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.htmlに従って、追加

mysql_query('SET NAMES UTF8');

直前

mysql_query($sql);

それでもうまくいかない場合は、サーバーに UTF8 を送信していることを確認してください。

echo 'team2=', bin2hex($team2);

君は見るべきだ

team2=57c3bc7374656e6675636873207a752067726fc39f

UTF8 を送信している場合。

于 2012-08-19T18:06:45.747 に答える