Pet*_*ter 7 php linux windows filesystems character-encoding
如果$filename包含变音符号(ä,ö,ü)file_get_contents($filename)在我的Windows操作系统上不起作用.通过反复试验,我发现我需要做file_get_contents(utf8_decode($filename))才能让它发挥作用.
但是,当我把这个推送到我的服务器(猜它是某种Linux)它再次返回错误,所以我删除了utf8_decode它,突然它完美地工作.
作为一种解决方法(所以每次我对代码进行更改时都不需要手动更改这段代码)我已经尝试过了
(mb_detect_encoding($filename, 'UTF-8', true)) ? utf8_decode$filename) : $filename;
Run Code Online (Sandbox Code Playgroud)
因为这已经解决了同样的问题,反之亦然(有相同的问题utf8_encode),但$filename结果是在每个(服务器)环境中都是UTF8编码,所以这不起作用,因为它总是如此.
任何想法如何使这两个系统都能工作?(请不要"只是迁移到Linux进行PHP开发" - 我有Linux,但ATM我出于多种原因使用Windows)
编辑:问题也出现,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!';
}
Run Code Online (Sandbox Code Playgroud)