0

我正在使用脚本将“$filename”变量从 flash 发送到 PHP,以创建 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);

这个问题解决了,但又出现了另一个问题。当我尝试从闪存打开文件时,它现在无法识别它,因为它是希腊语。

4

1 回答 1

1

问题是闪存以不同的编码发送数据。从mb_convert_encoding的 PHP 手册中的评论中,我可以看到您应该使用以下内容来使其工作(在 danisch 字符而不是希腊语上测试)

<?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);
?>
于 2013-05-13T10:20:24.013 回答