But C# strings, like everything Microsoft, are UTF-16. So you have to convert it to some kind of "array of bytes" that are UTF-8 encoded. So since you are fiddling with an array of bytes then simply knowing the difference in bytes is meaningful. Knowing the number of "UTF-8" (Unicode) codepoints does not help with handling UTF-16 character-points. Unless you are expecting to be lucky.