3

file_exists("file_å.txt");

当文件存在时返回false 。有什么可以让 *file_exists* 查看具有这种名称的文件吗?

谢谢。

4

4 回答 4

3

例如,当从 Excel 读取文件名并在磁盘上查找给定路径时,我已经遇到过几次这种情况。问题可能是“ä”是特定的 unicode 字符 (\u00e4) 或其“组合分叉”形式 (a\u0308),即带有两个点的“a”。

自 php 5.3 以来的最佳解决方案是使用 Normalizer 库。您可能需要sudo apt-get install php5-intl将该类放入您的 PHP 中。之后只是

$normalizer = new \Normalizer();
$normalizer->normalize($val, \Normalizer::FORM_D)

第二个参数有几种不同的形式,所以你必须查找你需要哪一个

于 2016-06-01T10:25:44.180 回答
2

检查这个答案: https ://stackoverflow.com/a/2685818/190791

我的解决方案是转换为 windows 文件格式:

$winfilename= iconv('utf-8', 'cp1252', $utffilename);
于 2012-12-16T13:35:58.517 回答
2

尝试

file_exists(mb_convert_encoding("file_å.txt", "UTF-8"));

假设文本不是 utf-8

于 2012-05-24T13:52:52.987 回答
1

检查您的 php 脚本在哪个编码中。可能它与文件系统不同。(例如 latin1 与 utf-8)

于 2012-05-24T13:52:41.483 回答