setlocale(LC_ALL,'en_GB.UTF8')不能在windows上工作

为什么setlocale(LC_ALL, 'en_GB.UTF8'); 在Windows Server 2003 R2上返回false – Zend CE PHP 5.3.5?

有问题的函数: setlocale

从PHP手册:

setlocale()的返回值取决于PHP正在运行的系统。 它将返回系统setlocale函数返回的内容。

所以在你的情况下,它返回false,因为系统返回false。 您使用的语言环境可能不适用于您的系统。

Windows支持的setlocale字符串列表可以在这里找到 。 对于英国英语,你想要engenglish-uk或者uk 。 Windows不支持像UTF-8这样的多字节字符集; 你可能会最终与Windows-1252。

我想补充一点,Windows不支持utf-8的问题可以通过如下方式来改进:

 $str=strftime('%a'); //for example if(!mb_check_encoding($str,'utf-8')) $str=utf8_encode($str);