strlen() и UTF-8

Долго искал причину появления знака вопроса в выводимых символах у себя на сайте. Оказалось, что для вывода в PHP-скрипте используется функция substr(), которая работает с однобайтными кодировками, а ведь данные у меня хранятся в UTF-8, где символ занимает два байта - вот поэтому-то некоторые символы "режутся" посередине и получаются такие знаки.

Решение: вместо substr() использовать функцию mb_substr().