如果$filename包含变音符号(ä,ö,ü)file_get_contents($filename)在我的Windows操作系统上不起作用。通过反复试验,我发现需要做file_get_contents(utf8_decode($filename))一些工作。
$filename
file_get_contents($filename)
file_get_contents(utf8_decode($filename))
但是,当我将其实时推送到服务器上(猜测它是某种Linux)时,它又返回了一个错误,因此我删除了,utf8_decode然后突然工作正常。
utf8_decode
作为一种解决方法(因此,我不需要在每次更改代码时都手动更改此代码),我已经尝试过
(mb_detect_encoding($filename, 'UTF-8', true)) ? utf8_decode$filename) : $filename;
因为这已经反过来解决了相同的问题()也有同样的问题utf8_encode,但是$filename事实证明它在每个(服务器)环境中都是UTF8编码的,所以这是行不通的,因为它总是正确的。
utf8_encode
有什么想法如何使它在两个系统上都能工作吗?(请不要“仅迁移到Linux以进行PHP开发” —我已经拥有Linux,但是出于多种原因,我正在使用Windows的ATM)
编辑:问题也会出现,fopen并且可接受的解决方案也可以工作。
fopen
最好的方法是检测您是否使用Windows服务器。由此您可以应用正确的命令
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { echo 'This is a server using Windows!'; } else { echo 'This is a server not using Windows!'; }