Похоже, вы используете 8-битные строковые функции для обработки символов Юникода. Это не сработает.
Вам необходимо установить пакет mbstring
и включить функцию «перегрузка функции mbstring» в вашей конфигурации php. Это позаботится о том, чтобы молча отключить все соответствующие функции обработки строк, чтобы вместо этого использовать их эквиваленты с несколькими байтами, так что вам не нужно менять код.
Существует множество вариантов конфигурации для этого расширения «mbstring». Проверьте свой файл конфигурации php.ini
и просмотрите их. Вы найдете команду mbstring.func_overload
, которую вы, вероятно, хотите установить на значение 7
, так что все такие функции переопределены. После изменения этой конфигурации вам необходимо перезапустить процесс http-сервера, чтобы новая конфигурация загружалась. Вы также можете проверить это, используя знаменитую функцию phpinfo()
в тестовом скрипте.
Альтернативой было бы не настраивать эту переопределяющую автоматику, а вручную переносить свой код для непосредственного использования этих функций. Для этого вам нужно будет заменить все вызовы строки функции в вашем коде эквивалентными именами функций. Так, например, mb_substr(...)
вместо substr(...)
.
Также вы действительно хотите начать чтение документации по используемым инструментам. Здесь представляет интерес введение в функции «многобайтовые строки». Это должно помочь вам понять, что все это значит и что вам нужно позаботиться: http://php.net/manual/en/book.mbstring.php
Используйте 'mb_substr' – Rein