如果我写:重命名不支持多字节字符
rename('php109.tmp','test.jpg');
那么它的罚款和工作。
,但如果我把它变成:
rename('php109.tmp','中文.jpg');
它会报告
“没有这样的文件或目录...”。
但是,如果多字节字符可写入数据库则可以读出,那么失败的原因时,它被重命名?
如果我写:重命名不支持多字节字符
rename('php109.tmp','test.jpg');
那么它的罚款和工作。
,但如果我把它变成:
rename('php109.tmp','中文.jpg');
它会报告
“没有这样的文件或目录...”。
但是,如果多字节字符可写入数据库则可以读出,那么失败的原因时,它被重命名?
我几乎可以肯定,mbstring与这个特定的问题无关,我认为这里的问题依赖于你的.php文件的编码。
尝试在代码编辑器中将文件的编码更改为UTF-8(无BOM!)。
但文件已经是utf8编码.. – omg 2009-05-18 13:31:25
您是否尝试过使用setlocale(LC_ALL, array("es_ES.utf-8","[email protected]",'es_ES'));
或您的国家/地区代码,以确保区域设置正确?
如果这个调用没有返回带有'utf-8'的东西,这意味着它失败了,然后返回当前的语言环境。
这个示例应该有帮助,你应该找到你的语言代码页并替换为那个。我测试波纹代码,它适用于阿拉伯语/波斯语的Windows名称:
$newname = iconv("utf-8", "cp1256","گچپژ");
echo rename("1.txt", $newname);
您的操作系统或文件系统是否支持多字节文件名? – garrow 2009-05-17 03:40:52
是的, 这里是更多的信息: 它是从网页提交时处理的, 页面编码是utf8 db编码是utf8。 和我倾倒字符串只发现它也是utf8 – omg 2009-05-17 03:46:09
你使用什么操作系统?我已经在FreeBSD 4.11,Debian 5.0和OS X 10.6.2上测试过了,没有任何错误。 如果您使用某种系统调用跟踪工具的操作系统,您可以尝试启用它吗? – 2009-12-30 16:26:43