将GET变量从Flash传递给带有中文字符的PHP

时间:2010-04-07 12:28:49

标签: php mysql flash actionscript

我正在从Flash调用一个php文件并在之后添加变量,如下所示: http://www.randomwebsite.com/something.php?title=爸爸

如果我将它直接复制并粘贴到网络浏览器中,它可以正常工作,但是如果我通过flash调用它,地址栏最终会像这样:something.php?title = ??

我可以用PHP或flash来编码/解码字符串吗? 非常感谢任何帮助。

谢谢, 将

编辑: 谢谢你们,这种方法运作得很好。一切都很好,但我现在有一些问题通过MySQL将信息插入我的数据库,我的所有字段都设置为UTF-8。我得到一些奇怪的字符而不是汉字。

非常感谢, 将

5 个答案:

答案 0 :(得分:3)

您需要对放在查询字符串中的参数进行URL编码。虽然IRI可以包含文字,但URI不能。它应编码为%E7%88%B8。 (它通常在地址栏中显示为,但IE中的某些情况除外。)

encodeURIComponent()是在JavaScript / ActionScript中执行此操作的功能。

答案 1 :(得分:1)

如果您在插入数据库时​​遇到问题,则需要确保该过程中涉及的所有内容都是utf8。如果你已经在phpmyadmin中测试了你的查询并且它工作正常我会建议在你的php脚本中添加以下查询:

mysql_query("SET character_set_client=utf8", $connection);
mysql_query("SET character_set_connection=utf8", $connection);

答案 2 :(得分:0)

请参阅rfc1738 2.2(http://www.faqs.org/rfcs/rfc1738),您需要对字符串进行编码。 我不知道如何在Flash中执行此操作,但PHP为您提供了函数(raw-)urlencode()和(raw-)urldecode()来执行此操作。

答案 3 :(得分:0)

您需要URL-encode个字符(您正在使用的浏览器可能会自动为您执行此操作)。这用于允许传输URL中通常不允许的字符(如空格)或具有特殊含义(如'?''&')。

由于您使用的字符不是标准ASCII,因此它们应编码为Unicode。当您在Flash中调用顶级encodeURIComponent()函数时,这会自动完成,并且每个Unicode字符会产生几个%xx个字符。

答案 4 :(得分:0)

实际上有几个url编码/解码功能可用(在as3中)。每个人都略有不同。

检查这些:

以上是来自flex参考,我假设它们也可以在CS中使用。