Хотя и существует множество языков, в которых все необходимые символы можно закодировать одним восьмибитным значением, существуют также и языки, требующие столько символов, что они не умещаются в один байт (Байт состоит из восьми бит. Каждый бит может содержать одно из двух различных значений, единицу или ноль. Поэтому, один байт может задавать только 256 уникальных значений (два в восьмой степени)). Схемы кодирования, использующие многобайтные строки, были разработаны для того, чтобы можно было пользоваться более, чем 256 символами, при этом продолжая работать со строками, как будто они закодированы в обычной побайтовой системе.
Когда вы работаете с многобайтными строками (удаляете пробельные символы с помощью функции trim, разбиваете строку на массив по регулярному выражению с помощью функции split, и т.д.), необходимо использовать специальные функции, так как в таких кодировках два или более последовательных байта могут задавать один символ. Иначе, если применить функцию, не умеющую работать с многобайтными строками, она, вероятно, не сможет определить начало и конец многобайтных символов, и в итоге вы получите строку-мусор, которая скорее всего потеряет исходное значение.
mbstring предоставляет функции для работы с многобайтными строками, которые облегчают работу c многобайтными кодировками в PHP. Кроме того, mbstring занимается конвертированием строк из одной кодировки в другую. mbstring предназначен для работы с Unicode-кодировками, такими, как UTF-8 и UCS-2, а также с многими однобайтными кодировками (для удобства), перечисленными ниже.