使用unicode字符保存文件名

时间:2014-04-14 11:03:54

标签: php encoding utf-8 windows-7

我在互联网上搜索了所有内容,但仍然没有运气:

我想知道,当filename有一些unicode字符时,如何使用file_put_contents正确保存文件。 (Windows 7作为操作系统)

$string = "jérôme.jpg" ; //UTF-8 string
file_put_contents("images/" . $string, "stuff");

文件中的结果:

jГ©rГґme.jpg

尝试使用所有可能的编码等iconvmb_convert_encoding等函数的所有可能组合,将源文件转换为不同的编码。 设置了所有正确的标头,浏览器正确识别UTF-8

但是,我可以在资源管理器的GUI中成功复制粘贴并创建一个具有这样名称的文件,但是如何通过PHP创建呢?

最后一个核心解决方案是urlencode字符串和保存文件。

1 个答案:

答案 0 :(得分:1)

这可能会迟到但我刚刚找到了解决这个受伤问题的解决方案。 忘记 iconv 多字节解决方案;问题is on Windows! (在链接中你会发现它的全部内容。)

经过多次尝试和解决方法,我遇到了URLify,并决定在处理文件之前,音译是处理文件中unicode的最佳方法。< / p>

在保存文件名之前音译文件的示例:

$filename = "Αρχείο.php";   // greek name for 'file'
echo URLify::filter($filename,128,"",TRUE);
// output:   arxeio.php