如何解决如何使用特殊的Unicode字符在PHP中复制文件?
我必须将一些pdf文件从网上复制到新版网上的文件路径中。该pdf文件是通过内容中的html a
链接的。
所以我正在做的是使用 regex 获取到pdf的所有链接,将它们复制到新路径,然后将链接更改为新路径。但是我对某些带有特殊字符的文件有疑问。例如:
$original_path = '/path/Dossier%20Nicola%CC%81s%20Combarro_GAL_CAST.pdf'
$decoded_path = urldecode($oiginal_path);
copy($decoded_path,$new_path);
它显示以下错误:
File '/path/Dossier Nicola´s Combarro_GAL_CAST.pdf' could not be copied because it does not exist.
它当然存在,但名称为:/path/Dossier Nicolás Combarro_GAL_CAST.pdf
。我可以使用pdf阅读器打开它,也可以在单击链接时通过网络浏览器打开它。
似乎PHP将a%CC%81
解码为a´
,而Windows将其解码为á
。如何正确复制此文件?
我正在使用Debian的VM上运行PHP,但是文件位于Windows 10(NTFS)的共享文件夹(NFS)中。
解决方法
Windows使用Windows-1252字符集作为文件名和路径。如果使用的是UTF-8,则需要转换文件名。
示例:
$utf8FileName = 'René.txt';
$windowFileName = mb_convert_encoding($utf8FileName,'Windows-1252','UTF8');
//Filesystem Win10
$content = file_get_contents($windowFileName);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。