繁体   English   中英

如何使用特殊的 unicode 字符在 PHP 中复制文件?

[英]How can I copy files in PHP with special unicode characters?

我必须将一些pdf文件从网络复制到新版本网络的文件路径。 该 pdf 文件由内容中的 html a链接。

所以我正在做的是使用正则表达式获取 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解码为但 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);

暂无
暂无

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

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