从flash as2发送西里尔文本到数据库

时间:2012-03-13 10:51:50

标签: character-encoding internationalization actionscript-2

将数据从Flash as2保存到数据库时,我遇到了一个非常大的问题。我自己尝试解决了这个问题,在不同论坛上阅读了很多主题但没有结果。

我在as2项目中有一个输入文本字段(mess_txt),在下一个代码中有一个发送按钮:

on(release){
   var formData = new LoadVars();
   formData.etext = mess_txt.text;
   formData.sendAndLoad("sendmail.php", formData, "POST");

   formData.onLoad = function(){
       // receive actions...
   }
}

sendmail.php中的代码:

include("connect.php");
$text = $_POST['etext'];

$text = str_replace("\r", "<br/>", trim(strip_tags($text)));
$text = str_replace("\n", "", $text);
$text = str_replace("\"", "&quot;", $text);
$text = str_replace("'", "&#39;", $text);

$query = "insert into reviews (text, status) values ('".$text."', 'new')";
mysql_query($query) or die (mysql_error());

mail("mail@gmail.com", "Title!", "Message text: ".$text);

当我使用拉丁符号时,两个代码都运行良好但是当我在输入文本中输入西里尔符号时,我在PHP代码中有一个空字符串。 在输入文本中,我使用_self字体并嵌入所有字形。但我认为问题在于发送数据,因为当发送简单的西里尔字符串而不是mess_txt.text时,我也有一个空字符串。

有趣的是,当我在PHP代码中使用mb_detect_encoding($_POST['etext'])时,我获得了ASCII而不是UTF

拜托,帮帮我!!!!


解决!!!

我找到了如何解决这个问题!对其他人来说可能会很有趣......

在将数据从as2发送到php之前,我将其从文本转换为unicode代码。这是我在as2项目中的功能:

on(release){
   var txt = getRealText(mess_txt.text);

   var formData = new LoadVars();
   formData.etext = txt;
   formData.sendAndLoad("sendmail.php", formData, "POST");

   formData.onLoad = function(){
       // receive actions...
   }

   function getRealText(str){
       var newStr = "";
       for(i=0, s=str.length; i<s; i++){
            newStr += "&#"+ord(str.charAt(i))+";";
       }
       return newStr;
   }
}

结果我发送了字符串“&#1090;&#1077;&#1089;&#1090;”而不是“тест”。 在PHP文件中我收到了这个字符串:

$text = html_entity_decode($_POST['etext'], ENT_NOQUOTES, 'UTF-8');

之后我获得了正常的西里尔文(或任何其他文本)。

希望这对某人有用!

0 个答案:

没有答案