strtolower ведет себя по-разному в режимах cli и fpm? - PullRequest
0 голосов
/ 30 апреля 2020

Я использую windows, php версия 5.6.38, попробуйте использовать strtolower для китайского иероглифа, но вывод в режимах cli и fpm отличается. Это почему? Ниже приведен мой код.

<?php
$str = "星";
echo ord($str[0]) . ',' . ord($str[1]) . ',' . ord($str[2]) . "----" ;
$str = strtolower($str);
echo ord($str[0]) . ',' . ord($str[1]) . ',' . ord($str[2]) ;
?>

Приведенный выше пример в cli выдаст: 230 152 159 ---- 230 152 255

В приведенном выше примере в fpm будет выведено: 230 152 159 ---- 230 152 159

1 Ответ

0 голосов
/ 30 апреля 2020

Две среды, вероятно, работают в разных локалях. CLI будет выбирать любую конфигурацию, установленную на вашей машине, и php устанавливать; FPM также будет выбирать конфигурацию, установленную веб-сервером.

Вы можете проверить свой язык, выполнив:

echo setlocale(LC_ALL, 0);

Как часть вашего скрипта. Я подозреваю, что вы найдете LC_CTYPE другим. Вы также можете использовать setlocale для изменения вашей локали в коде, хотя вам, вероятно, будет лучше сделать это через конфигурацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...