如何在php中上载具有utf-8名称的文件?

如何在php中上载具有utf-8名称的文件?,php,file,upload,Php,File,Upload,我们有一个文件名为波斯语,如: ایران.jpg 我们的问题是php无法按原始名称复制或重命名此文件, 也就是说,如果文件名没有完全的英文字符,结果如下: ط§ط´ط±ع©طھ ظ…ظ„غŒ ظ¾ط®ط´ ظپط±ط¢ظˆط±ط¯ظ‡ ظ‡ط§غŒ ظ†ظپطھغŒ-04ط¢ط¨ط§ظ†.jpg $fn = iconv("<persian-character-set>", "UTF-8", $file['name']); 一些文章建议使用iconv功能,如: $fn = ic

我们有一个文件名为波斯语,如:

ایران.jpg
我们的问题是php无法按原始名称复制或重命名此文件, 也就是说,如果文件名没有完全的英文字符,结果如下:

ط§ط´ط±ع©طھ ظ…ظ„غŒ ظ¾ط®ط´ ظپط±ط¢ظˆط±ط¯ظ‡ ظ‡ط§غŒ ظ†ظپطھغŒ-04ط¢ط¨ط§ظ†.jpg
$fn = iconv("<persian-character-set>", "UTF-8", $file['name']);
一些文章建议使用iconv功能,如:

$fn = iconv("CP-1252", "UTF-8", $file['name']);

我们使用该方法,但解决方案不起作用。

您需要为iconv指定正确的字符集,以便从中转换字符串。大概是这样的:

ط§ط´ط±ع©طھ ظ…ظ„غŒ ظ¾ط®ط´ ظپط±ط¢ظˆط±ط¯ظ‡ ظ‡ط§غŒ ظ†ظپطھغŒ-04ط¢ط¨ط§ظ†.jpg
$fn = iconv("<persian-character-set>", "UTF-8", $file['name']);
$fn=iconv(“,”UTF-8“,$file['name']);
您可能希望向输出字符集添加其他选项,如TRANSLINT和/或IGNORE:

$fn = iconv("<persian-character-set>", "UTF-8//TRANSLIT//IGNORE", $file['name']);
$fn=iconv(“,”UTF-8//TRANSLIT//IGNORE“,$file['name']);

有关这些选项的详细信息,请参阅。

事实上,我们有一个从UTF-8到UTF-8的转换,这不是荒谬的吗

$_FILE['name']的值是UTF-8,我们尝试将该字符集设置为UTF-8

我们的问题是,我们已经进入utf-8,但保存未知的编码

我认为Php是一个严重的错误,如果你想在windows操作系统中使用相反的、活跃的波斯语,并尝试用Php(比如Php)用波斯语字符创建一个文件夹,并使用所有你认为有效的方法


如果是,您做得很好,但是如果…

您应该选择正确的代码页。此代码在Windows中适用于阿拉伯语/波斯语名称:

$newname = iconv("UTF-8", "CP1256//IGNORE","گچپژ");
echo rename("1.txt", $newname);

有这样的东西吗?我没有找到任何与该代码相关的东西。这是询问者用合适的字符集替换它的占位符。有没有办法知道波斯字符集?我不知道!例如,什么样的文本被分解?