在php中通过utf-8名称上传文件

时间:2014-10-26 13:10:56

标签: php file upload

我们有一个具有波斯名称的文件,例如:

ایران.jpg

我们的问题是php无法通过原始名称复制或重命名此文件, 意思是如果文件名没有完全的英文字符,结果是这样的:

ط§ط´ط±ع©طھ ظ…ظ„غŒ ظ¾ط®ط´ ظپط±ط¢ظˆط±ط¯ظ‡ ظ‡ط§غŒ ظ†ظپطھغŒ-04ط¢ط¨ط§ظ†.jpg

有些文章推荐使用iconv功能,例如:

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

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

3 个答案:

答案 0 :(得分:2)

您需要将正确的字符集指定为iconv,从该字符集转换字符串。像这样:

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

您可能希望为输出字符集添加其他选项,如TRANSLINT和/或IGNORE:

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

有关这些选项的详细信息,请参阅http://php.net/manual/en/function.iconv.php

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

我们的问题是我们已经使用utf-8进入了,但是通过未知编码保存了!

我认为Php是一个严重的错误,如果您在Windows操作系统中考虑相反的,活跃的波斯语,并尝试通过PHP(如ایران)通过波斯语字符创建一个文件夹,并使用您认为有效的所有方法! / p>

如果是的话,你做得很好,但是如果......