【问题标题】:How to read foreign filenames in PHP?如何在 PHP 中读取外部文件名?
【发布时间】:2014-05-17 20:11:48
【问题描述】:

标签: php encoding utf-8 character-encoding


【解决方案1】:

尝试像这样将文件名转换为cp1252

if (file_exists(iconv('utf-8', 'cp1252', $utffilename)));

【讨论】:

    【解决方案2】:

    这是我在 5.3.x/Ubuntu 的控制台环境中尝试过的:

    <?php
    
    $file = 'Español.doc';
    echo file_get_contents($file);
    

    该文件包含单词“Hello”,并且可以正常打印到屏幕上。因此,我认为可以肯定地说,即使是旧版本的 PHP 也支持 UTF-8 文件名。

    问题可能是 Windows 上的 PHP 行为不同吗?也可以在控制台中试试这个。

    另外,请检查您的浏览器以查看它使用的渲染模式。对于 Firefox,使用查看页面信息并检查常规选项卡中的编码。

    【讨论】:

    • 我认为文件名以 UTF-16 存储的方式以及 PHP 文件函数的操作方式是 Windows 的问题。我在某处读到可以通过访问 FAT 表来获取 UTF-8 文件名。还在研究那个。我用 UTF-8(和其他)编码尝试了 Safari、Firefox 和 Chrome,但没有任何乐趣。
    • 如果您从 Windows 获取文件名(例如,使用 glob 或目录迭代器),那么也许使用 iconv 将 UTF-16 转换为 UTF-8?
    • 我使用 opendir 和 readdir 来获取文件夹/文件名并尝试了 iconv 和 mb_convert_encoding($file,'utf-8','ISO-8859-1'); mb_convert_encoding($file,'utf-8','utf-16');不高兴:-(
    • @iPad:好的,请用你的新尝试和新发现更新你的问题——也许这会吸引更多答案。
    • 好主意!另外,很明显:您可以切换到 Windows 吗?
    猜你喜欢
    • 2011-03-30
    • 2022-12-22
    • 2010-10-25
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多