2013-05-13 104 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