我想将一些数据保存在文件名中包含unicode字符的文件中(如中文、西里尔文、阿拉伯语等)使用PHP的file_put_contents()函数。我不想用urlencode()这样的东西单独对它们进行编码,因为如果文件名只包含非拉丁字符,那么没有人能够读懂它们。三个最大的OSes视窗,MacOS / OS X和Linux支持UTF-8或UTF-16字符的文件名,并可以毫无问题地显示它们,但似乎这并不是简单的调用类似的东西:
file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "こんにちは.txt", "");
在Windows 7(德语本地化)上,该文件存储为:
ã“ã‚“ã«ã¡ã¯.txt
PHP文件本身以UTF-8编码保存。在这3个系统上,文件名中包含unicode的文件是否有统一的保存方式?
发布于 2016-03-05 02:48:47
file_put_contents(__DIR___.iconv("UTF-8", "cp1251", $filename), $data);
-工作完美!
发布于 2015-05-10 01:08:52
正如here回答的那样,这是一个已知的视窗问题(glob() can't find file names with multibyte characters on Windows?)。
你可以尝试URLify来缓解这个问题,只在Windows上,文件应该有可读的名称,然后…
https://stackoverflow.com/questions/30142581
复制相似问题