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

file_exists(“file_å.txt”); </ p>

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

谢谢。</ p>
</ div>

展开原文

原文

file_exists("file_å.txt");

Returns false while file is there. Is there any what to make *file_exists* to see the files with this kind of names?

Thanks.

duanju8431
duanju8431 不重复。该主题与基于Windows的框相关。但感谢链接!
8 年多之前 回复
dongyonglie5132
dongyonglie5132 另见bugs.php.net/bug.php?id=46990
8 年多之前 回复
douchang8758
douchang8758 “file_exists”问题中可能重复的特殊字符(php)
8 年多之前 回复

4个回答



检查此答案:
https: //stackoverflow.com/a/2685818/190791 </ p>

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

 <  code> $ winfilename = iconv('utf-8','cp1252',$ utffilename); 
</ code> </ pre>
</ div>

展开原文

原文

Check this answer: https://stackoverflow.com/a/2685818/190791

The solution for me was to convert to windows file format:

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

duanche4578
duanche4578 这对我来说对文件名有效,其中有一个符号。 谢谢!
6 年多之前 回复



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

展开原文

原文

Check which encoding your php script is in. Probably it's different from the file systems. (E.g. latin1 vs. utf-8)

dongyu2047
dongyu2047 奇怪 - 也许尝试在包含您的文件的文件夹上运行scandir并查看它是如何回复给您的?
8 年多之前 回复
duankao4489
duankao4489 iconv('UTF-8','ISO-8859-1','file_å.txt')在浏览器中提供正确的文件命名,但file_eixsts仍然无法检查它是否存在。
8 年多之前 回复
douhan9748
douhan9748 你确定你的php文件是UTF8吗? (不是file_å.txt文件)
8 年多之前 回复
dongxing8650
dongxing8650 是的,该文件是UTF-8。 不知道如何检查我的提升机的文件系统是什么编码。 会让你更新。 谢谢你的提示。
8 年多之前 回复



尝试</ p>

file_exists(mb_convert_encoding(“file_å.txt”,“UTF- 8“)); </ code> </ p>

假设文本不是utf-8 </ p>
</ div>

展开原文

原文

try

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

assuming the text is not utf-8

drk7700
drk7700 为我工作:D
6 年多之前 回复
douyong2531
douyong2531 谢谢,这没用。
8 年多之前 回复



例如,当我从Excel读取文件名并在磁盘上查找给定路径时,我已经运行了几次。 问题可能是“ä”要么是特定的unicode char(\ u00e4),要么是“组合diaresis”形式(a \ u0308),即带有两个点的“a”。</ p>

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

  $ normalizer = new \ Normalizer(); 
$ normalizer-&gt; normalize($ val,\ Normalizer :: FORM_D)
</ code> </ pre>

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

展开原文

原文

I've run in to this a couple of times when for example reading filenames from an Excel and looking up a given path on disk. The problem may be that "ä" is either it's specific unicode char (\u00e4) or its "combined diaresis" form (a\u0308) ie an "a" with two dots.

Best solution since php 5.3 is to use the Normalizer library. You may need sudo apt-get install php5-intl to get the class into your PHP. After that just

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

Theres a few different forms for the second argument so you'll have to look up which one you need

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问