php副本不能使用utf8字符?

时间:2011-10-11 09:14:35

标签: php

我正在使用php copy()函数,我得到了奇怪的结果,这使我谷歌,无法找到任何关于这个主题,所以我的结论是PHP的副本($ src,$ dest)函数不能有utf8字符在$ src和$ dest,但只是想让你们确认一下 - 或许你知道解决这个问题的方法吗?

最终结论: @azat:我感谢你的答案,并试图提供帮助 - 但总而言之,我发现自己错了!这些文件(当下载到我的电脑上时确实有正确的字符!但是当我从WinSCP查看文件夹的内容时,我看到它们都是乱码,我认为是因为WinSCP。无论如何,我会将你的答案标记为正确你是唯一一个帮助我的人,让我最终意识到自己的错误。

编辑:我运行它的系统是Linux,php文件中的命令示例如下:

<?php
    copy ("images/test.png", "images/myTestŽĆČĐŠžćčđš.png");
?>

EDIT2:

#>uname -a
Linux litij.avalon.hr 2.6.18-274.3.1.el5 #1 SMP Tue Sep 6 20:13:52 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

#>cat /etc/mtab
/dev/root /lib virtfs defaults 0 0
/dev/root /opt virtfs defaults 0 0
/dev/root /lib64 virtfs defaults 0 0
/dev/root /usr/lib virtfs defaults 0 0
/dev/root /usr/lib64 virtfs defaults 0 0
/dev/root /usr/sbin virtfs defaults 0 0
/dev/root /usr/share virtfs defaults 0 0
/dev/root /usr/bin virtfs defaults 0 0
/dev/root /usr/man virtfs defaults 0 0
/dev/root /usr/X11R6 virtfs defaults 0 0
/dev/root /usr/kerberos virtfs defaults 0 0
/dev/root /usr/libexec virtfs defaults 0 0
/dev/root /usr/local/bin virtfs defaults 0 0
/dev/root /usr/local/share virtfs defaults 0 0
/dev/root /usr/local/Zend virtfs defaults 0 0
/dev/root /usr/local/IonCube virtfs defaults 0 0
/dev/root /usr/include virtfs defaults 0 0
/dev/root /usr/local/lib virtfs defaults 0 0
/dev/root /var/spool virtfs defaults 0 0
/dev/root /var/lib virtfs defaults 0 0
/dev/root /var/cpanel virtfs defaults 0 0
/dev/root /usr/local/cpanel/Cpanel virtfs defaults 0 0
/dev/root /var/run virtfs defaults 0 0
/dev/root /var/log virtfs defaults 0 0
/dev/root /tmp virtfs defaults 0 0
/dev/root /dev virtfs defaults 0 0
/dev/root /bin virtfs defaults 0 0
/dev/root /usr/local/apache/domlogs virtfs defaults 0 0
/dev/root /etc/mail virtfs defaults 0 0
/dev/root /home/fotoctim virtfs defaults 0 0
none /proc proc rw 0 0

值得注意的是我的复制命令没有给出任何错误:(

if (copy($src, $dest)){
    echo  "File <b>successfully</b> copied to $dest<br/>";
}
else{
    echo "File <b>was not!</b> copied to $dest<br/>";
}

2 个答案:

答案 0 :(得分:1)

的Ext4
LANG =的en_US.UTF-8

<?
touch("/tmp/test.png");
copy("/tmp/test.png", "/tmp/myTestŽĆČĐŠžćčđš.png");
azat:~$ ls /tmp/myTestŽĆČĐŠžćčđš.png 
/tmp/myTestŽĆČĐŠžćčđš.png

所以问题是你拥有的文件系统和挂载选项

答案 1 :(得分:0)

我知道这已经晚了,但您需要检查包含下面的复制脚本的php文件的格式是否为utf-8格式。所以当它复制文件时,它会以相同的格式复制它。这就是我解决问题的方法。

<?php

拷贝($路径,$目标寄存器); ?&GT;