php:file_put_contents()带有Unicode文件名



我想在文件名中保存一些数据,其中包含Unicode字符(例如中文,西里尔,阿拉伯语,...),并带有php的file_put_contents()函数。我不想用urlencode()之类的内容单独编码它们,因为如果仅包含非latin chars,则没有人能够读取文件名。文件名中的3个最大的OS Windows,MacOS/OS X和Linux支持UTF-8或UTF-16字符,并且可以毫无问题地显示它们,但似乎并不那么容易,因为它只是调用类似的东西:

file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "こんにちは.txt", "");

在Windows 7(德语本地化)上,该文件存储为:

ã“ã‚“ã«ã¡ã¯.txt

PHP文件本身保存在UTF-8编码中。是否有一种统一的方法可以在此3个系统上的文件名中保存使用Unicode的文件?

file_put_contents(__DIR___.iconv("UTF-8", "cp1251", $filename), $data);-完美工作!

正如这里回答的那样,它是一个已知的Windows问题(Glob()找不到Windows上带有多键字符的文件名?)。

您可以尝试使用urlify来减轻Windows上的问题,文件应具有可读的名称...

最新更新