Hay caracteres que son 7 bits solamente ASCII, muchos son 8 bits, otros caracteres como los de japones o chino usan 16 bits, unicode usa 32 bits mayormente. Podrías detectar mejor cuantos son con
mb_strlen, eso toma en cuenta los bits y luego lo multiplicas por 8.