How does `char_length` deal with multi-byte characters?