如果我写:
rename('php109.tmp','test.jpg');
然后它很好并且工作。
但如果我把它改成:
rename('php109.tmp','中文.jpg');
它会报告
“没有这样的文件或目录...”。
但是如果多字节字符可以写入数据库然后可以读出,那么为什么它重命名时会失败?
此示例应该有所帮助,您应该找到您的语言代码页并用它替换。我测试了 Bellow 代码,它在 Windows 中适用于阿拉伯/波斯名称:
$newname = iconv("utf-8", "cp1256","گچپژ");
echo rename("1.txt", $newname);
您是否尝试过使用setlocale(LC_ALL, array("es_ES.utf-8","es_ES@euro",'es_ES'));
国家/地区代码或任何国家/地区代码,以确保正确设置区域设置?
如果此调用未返回包含“utf-8”的内容,则表示它失败,然后将返回当前语言环境。
我几乎可以肯定 mbstring 与这个特定问题无关,我认为这里的问题取决于你的 .php 文件的编码。
尝试在代码编辑器中将文件的编码更改为 UTF-8(没有 BOM!)。