php - "file_exists"问题中的特殊字符 (php)

标签 php html character-encoding

我使用特殊字符(瑞典字母 åäö)。

现在,我有一些文件夹,其中包含分类广告的图像。 文件夹按类别命名。

for ($i=1; $i<=5; $i++){
    if (file_exists($big_images.$i.'.jpg')){ echo "Inne";
        unlink($big_images.$i.'.jpg');
    }
    if (file_exists($thumb_images.$i.'.jpg')){
        unlink($thumb_images.$i.'.jpg');
        }
    }

我的网站上最多允许 5 张图片,每张图片都以数字 1-5 结尾。 但是,我的问题是,只要文件夹名称有特殊字符,file_exists 就会返回 false,即找不到文件。 即使它在那里。

所有文件都是utf-8格式。

这适用于文件夹名称中没有特殊字符的情况。

如果您需要更多信息,请告诉我

最佳答案

服务器操作系统是什么?

如果是 Windows,您将无法访问 UTF-8 编码文件名下的文件,因为 PHP 使用的 C IO 库的 Windows 实现只会使用系统默认代码页。对于西欧安装,这是代码页 1252。您可以使用 iconv 将 UTF-8 字符串转换为 cp1252:

$winfilename= iconv('utf-8', 'cp1252', $utffilename);

(也可以使用 utf8_decode,但对于映射到 cp1252 中 0x80-0x9F 范围的 Windows 扩展字符,它会给出错误的结果。)

PHP 和其他使用 stdio 的程序根本无法访问其名称包含系统代码页指令表之外的字符的文件(例如,西方盒子上的希腊语)。有一些脚本语言可以通过 Win32 API 使用 native Unicode 文件名,但 PHP5 不是其中之一。

当然,当部署在文件系统采用 UTF-8 编码的不同操作系统上时,不应使用上述步骤。 (即现代 Linux。)

如果您需要与 PHP 无缝跨服务器兼容,则必须避免在文件名中使用非 ASCII 字符。对不起。

关于php - "file_exists"问题中的特殊字符 (php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2685718/

相关文章:

php - 查找最低可用功能

jquery - 滚动按钮滚动到多个元素位置

jquery - 将鼠标悬停在 div 上时显示 jQuery 工具提示

Java Jersey : Receive form parameter as byte array

ruby - 如何在 Ruby 的正则表达式中使用 şŞıİçÇöÖüÜÜĞğ 字符?

php - PDO 和 MYSQL 的问题

javascript - 连接表时准备好的语句使图片显示在 php 页面上

php - 如何配置 SPF 和 DKIM 以防止邮件进入垃圾邮件文件夹

javascript - CSS 选择器路径 - TestComplete Javascript 无法单击按钮

c# - 撇号通过 C# 中的过滤器