Вопрос Почему PHP не поддерживает много-байтовые символы? И почему её до сих пор не могут исправить?

Регистрация
22 Июл 2013
Сообщения
89
Репутация
-3
Спасибо
0
Монет
0
Почему PHP не поддерживает много-байтовые символы? И почему её до сих пор не могут исправить?
 
Функция strlen() - возвратит количество байт, а не число символов в строке - это для однобайтовых кодировок
mb_strlen() - Возвращает количество символов в строке (string) string, имеющих кодировку символов encoding. Многобайтовый символ вычисляется как 1.это как раз для UTF-8
и есть еще десяток функций с префиксом mb_ - для других операций с UTF-8 строками
 
Зачем исправлять то, что не является ошибкой? PHP прекрасно поддерживает многобайтные кодировки. Более того, кодировка UTF-8 является стандартом de facto в современном PHP-коде.

Надо лишь понимать, что в PHP существуют ДВЕ библиотеки для работы со строками: одна для однобайтных кодировок и функций, не зависящих от кодировки, вторая - для многобайтных версий тех функций, которые зависят от типа кодировки.

P.S. При разработке PHP 6 была сделана попытка переделать виртуальную машину на многобайтные строки, но она была признана неудачной, проект был закрыт, а прочие новые возможности языка, предлагаемые в шестёрке, были постепенно встроены в версии 5.4-5.6.
 
Большинство строковых PHP-функций, таких как substr(), не поддерживают многобайтные строки. Многобайтное расширение (mbstring) имеет строковые РНР-функции с поддержкой многобайтных символов (например, substr() поддерживает mb_substr()). Многобайтное расширение (mbstring) также поддерживает 'перегрузку функций' для добавления функциональности многобайтных строк без модификации кода.
 
Назад
Сверху