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(LC_ALL,'en_GB.UTF8')不能在windows上工作

功能问题:setlocale

从PHP手册:

setlocale()返回值取决于PHP所运行的系统上。它返回的是系统setlocale函数返回的内容。

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

Windows支持的setlocale字符串列表可用here。对于英国英语,您需要engenglish-ukuk。 Windows不支持多字节字符集,如UTF-8;你可能会以Windows-1252结束。

+0

感谢,如何让UTF-8支持在Windows呢? – Marcin 2012-02-28 20:53:46

+1

你究竟想要做什么?为什么你需要改变系统区域设置? – spencercw 2012-02-28 20:55:22

+0

好的,所以出于某种原因,通过XMLReader处理UTF-8编码的XML文件,XPath fwrite最终在输出上不是UTF-8编码,因为某些原因字符变得混乱,谢谢。 – Marcin 2012-02-28 21:05:38

我想补充一点的Windows的问题,不支持UTF-8可以像这样的东西加以改进:

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