Разная длина strlen на разных машинах?

Добрый день. Не могу понять что не так в конфигурациях.
На локальной машине: strlen("йцу") == 3
На сервере: strlen("йцу") == 6
При том что конфигурации php.ini совпадают. Про mb_string мне известно, но из чужого продукта кода не выкинешь. Куда можно смотреть? Может в системе должны стоять какие-то языковые пакеты? Почему в одном случае считает мультибайтово, а в другом нет?
Причем на версии php 5.6 такой проблемы нет, а вот на 7.3 есть.
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 4
FanatPHP
@FanatPHP
Чебуратор тега РНР
Как правильно тебе написали в комментариях, скрипты сохранены в разных кодировках.
Несмотря на то что ты думаешь, что кодировки одинаковые, факты, которые ты можешь наблюдать в реальности, говорят об обратном.

Учись верить фактам, а не своим фантазиям. Очень важное качество для программиста.

И заодно учись скромности. Если тебе мерещится, что в твоих проблемах виновата страшная бага в пхп, то присмотрись повнимательнее. Увидишь дурацкую опечатку в своем коде.
Ответ написан
@whiteBlackness
Разные кодировки.
На локальной машине у тебя однобайтная кодировка (например Windows-1251)
На сервере - скорее всего utf-8, а там символ от 1 до 4 байт может занимать.
Ответ написан
Lynn
@Lynn
nginx, js, css
@BorisKorobkov Куратор тега PHP
Web developer
Для PHP5.6 не установлен https://www.php.net/manual/en/mbstring.installation.php , поэтому игнорирует https://www.php.net/manual/en/mbstring.overload.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы