我在互联网上搜索了所有内容,但仍然没有运气:
我想知道,当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
尝试使用所有可能的编码等iconv
和mb_convert_encoding
等函数的所有可能组合,将源文件转换为不同的编码。
设置了所有正确的标头,浏览器正确识别UTF-8
。
但是,我可以在资源管理器的GUI中成功复制粘贴并创建一个具有这样名称的文件,但是如何通过PHP创建呢?
最后一个核心解决方案是urlencode
字符串和保存文件。
答案 0 :(得分:1)
这可能会迟到但我刚刚找到了解决这个受伤问题的解决方案。 忘记 iconv 和多字节解决方案;问题is on Windows! (在链接中你会发现它的全部内容。)
经过多次尝试和解决方法,我遇到了URLify,并决定在处理文件之前,音译是处理文件中unicode的最佳方法。< / p>
在保存文件名之前音译文件的示例:
$filename = "Αρχείο.php"; // greek name for 'file'
echo URLify::filter($filename,128,"",TRUE);
// output: arxeio.php