Наскільки я памятаю - то символ (тобто БУКВА) в utf8 кодується двома байтами.
Взагалі-то не зовсім так. В UTF-8 символ (літера чи знак) може кодуватися від 1 до 6 (на сьогодні - до 4, 2 - в резерві і навряд чи колись будуть використовуватися) байт. Основні латинські символи кодуються одним байтом і співпадають із Американським стандартним кодом обміну інформацією (ASCII). Всі інші кодуються послідовностями 2,3 і 4 байт. Кирилиця кодується 2-байтними послідовностями.
При чому слід зауважити, що не всякі послідовності байт відповідають символам, тобто, існують "некоректні" послідовності, які не відповідають ніяким символам.
Таким чином, якщо програмне забезпечення "не знає", що використовується UTF-8 і розглядає текст у кодуванні UTF-8 як послідовність байт, то більшість "символьних" функцій (наприклад, length, substr, uppercase, lowercase ...) ,будуть працювати некоректно і можуть пошкодити текст - перетворити коректні послідовності байт у некоректні, які не відповідають жодному символу.