setlocale (LC_ALL, 'en_GB.UTF8') не работает на окнах - PullRequest
3 голосов
/ 29 февраля 2012

Почему setlocale(LC_ALL, 'en_GB.UTF8'); возвращает false в Windows Server 2003 R2 - Zend CE PHP 5.3.5?

Рассматриваемая функция: setlocale.

Ответы [ 2 ]

7 голосов
/ 29 февраля 2012

Из руководства по PHP:

Возвращаемое значение setlocale() зависит от системы, в которой работает PHP.Он возвращает именно то, что возвращает системная setlocale функция.

Так что в вашем случае он возвращает false, потому что система возвращает false.Вероятно, используемый вами языковой стандарт недоступен в вашей системе.

Список setlocale строк, поддерживаемых Windows, доступен здесь .Для британского английского вы хотите eng, english-uk или uk.Windows не поддерживает многобайтовые наборы символов, такие как UTF-8;вы, вероятно, в конечном итоге с Windows-1252.

0 голосов
/ 04 октября 2015

Я хотел бы добавить, что проблема Windows, не поддерживающей utf-8, может быть улучшена примерно так:

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