用日文字符重命名文件


PHP - rename file with japanese characters

为什么下面的代码错误地将1.txt重命名为一.txt.txt而不是一.txt ?

rename('1.txt','一.txt');

主要是因为编码不匹配。您的脚本应该使用正确的编码,这种编码必须与文件系统编码相匹配。如果其中一个不匹配(通常是脚本),那么您就会得到所描述的效果。确保您使用相同的编码或替换您的"内联"名称(供参考,您的目标文件名在这里看起来为"-.txt",其中"-"是长划线)与数字实体。

混合编码的乐趣。错误可能在任何地方,在您的文件系统中,在您的网络编码中,在您的shell中,在您的编辑器中,在您的文件管理器中,甚至在没有正确解释字符的终端中,…

请确保每个人都使用相同的字符集。这通常可以通过使用正确的环境变量来解决。请注意,PHP并没有真正对文件名的字符做任何事情,所以只要你不使用字符串函数来操作字符串(不幸的是,它仍然只与单字节字符串兼容),你应该不会在PHP中遇到太多麻烦。