AS3 文档说 AS3 中的字符串是 UTF-16 格式。
Flash Clip 上有一个文本框,用户可以在其中键入一些数据。
单击按钮时,我希望将此数据发送到 php 脚本。
我已经设置好了一切,但似乎 PHP 脚本以 UTF-16 格式获取数据。数据库中的数据(即 utf-8)显示了一些无法识别的字符(其中使用了特殊字符),这意味着数据没有以正确的编码发送。
var variables:URLVariables=new URLVariables;
var varSend:URLRequest=new URLRequest("http://website.com/systematic/accept.php");
varSend.method=URLRequestMethod.POST;
varSend.data=variables;
var varLoader:URLLoader=new URLLoader;
varLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);
单击提交按钮时,将执行以下处理程序。
function sendData(event:MouseEvent) : void {
// i guess here is the problem (tbName.text is UTF-16)
variables.name = tbName.text;
varLoader.load(varSend);
}
有什么方法可以发送数据,以便 PHP 脚本以 UTF-8 格式获取数据?
(PHP 脚本正在使用 $_POST['name'] 检索值)。
编辑(在有用的评论之后):
我尝试使用 iconv() 将 POST 变量转换为 UTF-8,但我只得到问号。这可能意味着我假设 php 以 UTF-16 格式获取字符串是错误的。似乎没有。但现在我完全不知道如何解决这个问题。
有问题的字符是克罗地亚字符(č、ć、š、ž 和 đ),均采用 Windows-1250 编码。如果我手动编辑 phpMyAdmin 中的条目并输入任何这些字符,一切都会很好。但如果我是通过闪存来做的,它就行不通了。
另一个奇怪的事情是,我删除了 iconv 并将所有内容都放在了开头,现在只有非特殊字符会显示给第一个克罗地亚人。例如,如果我写“ačasdfadfa”,只有“a”会存储在数据库中。
另一个编辑:
我现在尝试将克罗地亚字符转换为 ASCII(参见下面的代码),然后在 PHP 端将它们返回为 č、ć 等。Flash 显然是正确的(因为不再有特殊字符),但是 PHP 没有正确地将字符转换回字符串。这就是我正在做的事情。
所以我想这与 PHP 或它如何将数据存储到数据库中有关。PHP 文件本身是 UTF-8 编码的。