2013-05-13 25 views
0

我用一个脚本来从闪存发送一个“$文件名”变量,以创建一个XML文件到PHP。问题是,当我输入希腊字符作为文件名时,服务器上的文件名得到如下的值:例如:(ΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟΟ型ΟΞΞΞΞ.qxml)UTF8变量为filename

我没有任何问题a)在编写英文字符时,b)在xml文件中编写希腊字符数据时。

我正在使用file_put_contents函数。

如果不是获得这个职位变量作为文件名,我有了自己的文件名,如“Ελληνικά.qxml”它的工作原理没有问题。

非常感谢。

$string = $_POST['xmldata']; 
$filename = $_POST['filename']; 

$path = "test/"; 

//$dir_handle = @opendir($path) or mkdir("{$path}", 0777, true); 

file_put_contents($path."/".$filename."", $string); 

这个问题已经解决,但另一个出现。当我尝试从闪存中打开文件时,它现在不能识别它,因为它是用希腊文写成的。

回答

1

的问题是,闪光灯发送在不同的编码的数据。从为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); 
?> 
+0

感谢很多答案现在我得到。 ??????????????。qxml – Hellykun 2013-05-13 10:29:22

+0

非常感谢我只是改变了。 ISO-8859-1到ISO-8859-7,它现在​​工作完美! – Hellykun 2013-05-13 10:33:36

相关问题