setlocale(LC_ALL,'en_GB.UTF8')无法在Windows上运行

时间:2012-02-28 20:38:49

标签: php windows utf-8 setlocale

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

有问题的功能:setlocale

2 个答案:

答案 0 :(得分:7)

从PHP手册:

  

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

因此,在您的情况下,它返回false,因为系统返回false。您正在使用的区域设置可能在您的系统上不可用。

Windows支持的setlocale个字符串列表可用here。对于英式英语,您需要engenglish-ukuk。 Windows不支持像UTF-8这样的多字节字符集;你最终可能会得到Windows-1252。

答案 1 :(得分:0)

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

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