简体   繁体   English

PHP的副本不能与UTF8字符?

[英]php copy not working with utf8 characters?

I am using php copy() function and am getting strange results which made me google and couldn't find anything about this topic so my conclusion was that php's copy($src, $dest) function cant have utf8 characters in the $src and $dest, but just wanted you guys to confirm on this - or maybe you know a way around this? 我正在使用php copy()函数,并且得到了奇怪的结果,这使我成为Google,无法找到与此主题相关的任何内容,因此我的结论是php的copy($ src,$ dest)函数不能在$ src和$ src中包含utf8字符。 $ dest,但只想让您确认一下-也许您知道解决方法?

final conclusion: @azat: I thank you for your answers and trying to help - but all in all now I see I was wrong! 最终结论: @azat:非常感谢您的回答和帮助,但总的来说,我现在发现自己错了! The files (when downloaded to my computer did have correct caracters!, but when I was viewing the contents of the folder from my WinSCP I was seeing them all scrambled which I presume is because of the WinSCP. Anyway I will mark your answer correct as you were the only one to help and made me realize my error in the end. 这些文件(当下载到我的计算机上时确实具有正确的特征!!但是,当我从WinSCP中查看该文件夹的内容时,我发现它们都是由WinSCP引起的混乱。无论如何,我会将您的答案标记为正确:您是唯一可以帮助我的人,最终使我意识到了自己的错误。

edit: system on which i run this is Linux and an example of the command in php file is this: 编辑:我在上面运行的系统是Linux,php文件中命令的示例是这样的:

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

edit2: 编辑2:

#>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

Worth noting is that my copy command doesn't give any errors :( 值得注意的是,我的复制命令没有给出任何错误:(

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

Ext4 分机4
LANG=en_US.UTF-8 LANG = zh_CN.UTF-8

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

So the question is what filesystem you have and mount options 所以问题是您拥有什么文件系统和安装选项

I know this is late, but you need to check that the format of the php file containing the copy script below is utf-8 format. 我知道这已经晚了,但是您需要检查包含以下复制脚本的php文件的格式是否为utf-8格式。 so when it copies the file, it copies it in the same format. 因此,当它复制文件时,会以相同的格式复制它。 this is how i solved my problem. 这就是我解决问题的方式。

<?php

copy($path,$dest); 复制($ path,$ dest); ?> ?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM