I think I had issues even with mbstring, for some characters like "œ". But maybe I'm wrong.
Handling those "correctly" with a string length function gets complicated in any language, as there isn't a 1-to-1 mapping between Unicode codepoints and visible glyphs.