我正在使用脚本从flash向PHP发送“$ filename”变量以创建xml文件。问题是当我输入希腊字符作为文件名时,服务器上的文件名会获得这些值,例如:(ΞσωΞσαωΟ,ΞμΟ‰Ο,ΞμΞ².qxml)
我没有任何问题a)在写英文字符时,b)在xml文件中写入希腊字符数据。
我正在使用file_put_contents函数。
如果不是将Post变量作为文件名,我设置自己的文件名,例如“Ελληνικά.qxml”,它可以正常工作。
提前多多感谢。
$string = $_POST['xmldata'];
$filename = $_POST['filename'];
$path = "test/";
//$dir_handle = @opendir($path) or mkdir("{$path}", 0777, true);
file_put_contents($path."/".$filename."", $string);
这个问题已经解决,但另一个问题出现了。当我尝试从flash打开文件时,它现在无法识别它,因为它是希腊语。
答案 0 :(得分:1)
问题是flash正在以不同的编码发送数据。从mb_convert_encoding的PHP手册中的注释我可以看到你应该使用以下内容来使它工作(在danisch charactors而不是希腊语上测试)
<?php
$string = isset($_POST['xmldata'])?$_POST['xmldata']:"";
$filename = isset($_POST['filename'])?$_POST['filename']:"";
//tested on danish chars
/*
$string = mb_convert_encoding($string, "ISO-8859-1", "UTF-8");
$filename = mb_convert_encoding($filename, "ISO-8859-1", "UTF-8");
*/
//tested on greek chars
$string = mb_convert_encoding($string, "ISO-8859-7", "UTF-8");
$filename = mb_convert_encoding($filename, "ISO-8859-7", "UTF-8");
$path = "test/";
//$dir_handle = @opendir($path) or mkdir("{$path}", 0777, true);
file_put_contents($path."/".$filename."", $string);
?>