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。对于英国英语,您需要eng
,english-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);
感谢,如何让UTF-8支持在Windows呢? – Marcin 2012-02-28 20:53:46
你究竟想要做什么?为什么你需要改变系统区域设置? – spencercw 2012-02-28 20:55:22
好的,所以出于某种原因,通过XMLReader处理UTF-8编码的XML文件,XPath fwrite最终在输出上不是UTF-8编码,因为某些原因字符变得混乱,谢谢。 – Marcin 2012-02-28 21:05:38