似乎PHP中的文件处理不适用于某些字符(例如€)编码的UTF-8,如果路径是硬编码的并且php文件保存为UTF-8.
是否可以使它适用于所有(或大多数西方角色)?是否有可能的库?因为我找不到任何东西.
例如äöü&()éèàâêûô@$+ç%&=,Windows中名为!£_; {[]}〜'¢§§°#@ | ...€ 的文件夹将无法与is_dir()一起使用.
好的,我找到了解决方案.我还没有完全测试它,我不确定它是否是万无一失的我不知道这是否是最好的做法,但将字符串编码回ANSI似乎可以解决问题(至少对于我发布的字符串) ).
$string = iconv(mb_detect_encoding($string, "auto"), 'Windows-1252', $string);
Run Code Online (Sandbox Code Playgroud)
我想这应该适用于大多数西方Windows计算机的默认设置.