PHP file_exists和特殊字符,如ÅØÆ在Linux机器上

时间:2012-05-24 13:48:06

标签: php linux special-characters file-exists

file_exists( “file_å.txt”);

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

感谢。

4 个答案:

答案 0 :(得分:2)

尝试

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

假设文字不是utf-8

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

检查您的PHP脚本所在的编码。可能与文件系统不同。 (例如,latin1 vs. utf-8)

答案 3 :(得分:0)

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

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

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

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