1

我想使用 PHP 的 file_put_contents() 函数将一些数据保存在文件名中包含 unicode 字符的文件中(如中文、西里尔文、阿拉伯文......)。我不想用 urlencode() 之类的东西单独对它们进行编码,因为如果文件名仅包含非拉丁字符,人类将无法读取它们。3 个最大的操作系统 Windows、MacOS / OS X 和 Linux 在文件名中支持 UTF-8 或 UTF-16 字符,并且可以毫无问题地显示它们,但似乎并不像调用这样的东西那么容易:

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

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

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

PHP 文件本身以 UTF-8 编码保存。在这3个系统上是否有统一的方法来保存文件名中带有unicode的文件?

4

2 回答 2

1

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

于 2016-03-04T18:48:46.923 回答
0

正如在此处回答的那样,这是一个已知的 Windows 问题(glob() 在 Windows 上找不到带有多字节字符的文件名?)。

您可以尝试URLify来缓解仅在 Windows 上的问题,文件应该具有可读的名称然后......

于 2015-05-09T17:08:52.173 回答