While UTF-8 is a good default encoding, it seems odd to tie standard functions into things which cannot be presumed. Without having the ability to specify encoding, you will have one function for UTF-8 and a different one (roll your own?) for every other encoding out there.
Uhm... read the both these lines, not just one of them like you did before:
<jnthn> chars($string) # characters
<jnthn> bytes($string) # how many bytes